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