我想知道在验证方面是否有任何数据注释可以添加到 DataContract 中的 DataMember 中。
假设我们有一个 firstname(string) 数据成员,我们不希望其长度超过 50 个字符。如果 firstname 的长度超过 50,是否有任何方法可以捕获它,或者我们是否需要实现自定义故障异常以引发异常。
我们需要对 WCF 安全性进行此验证。对此有何建议?
我想知道在验证方面是否有任何数据注释可以添加到 DataContract 中的 DataMember 中。
假设我们有一个 firstname(string) 数据成员,我们不希望其长度超过 50 个字符。如果 firstname 的长度超过 50,是否有任何方法可以捕获它,或者我们是否需要实现自定义故障异常以引发异常。
我们需要对 WCF 安全性进行此验证。对此有何建议?
DataContractSerializer 没有允许您通过注释 DataMembers 以声明方式指定验证的功能。
如果您将 DataMember 定义为属性(而不是字段),那么您可以在属性设置器中编写代码以在反序列化期间验证数据。代码可以在验证失败或更改数据时引发异常(例如,在您的名字成员示例中将其截断为 50 个字符)。
[DataMember]
public string FirstName
{
get { return ...; }
set { if (value.Length > 50) throw new MyValidationException(); }
}