2

我想知道在验证方面是否有任何数据注释可以添加到 DataContract 中的 DataMember 中。

假设我们有一个 firstname(string) 数据成员,我们不希望其长度超过 50 个字符。如果 firstname 的长度超过 50,是否有任何方法可以捕获它,或者我们是否需要实现自定义故障异常以引发异常。

我们需要对 WCF 安全性进行此验证。对此有何建议?

4

1 回答 1

1

DataContractSerializer 没有允许您通过注释 DataMembers 以声明方式指定验证的功能。

如果您将 DataMember 定义为属性(而不是字段),那么您可以在属性设置器中编写代码以在反序列化期间验证数据。代码可以在验证失败或更改数据时引发异常(例如,在您的名字成员示例中将其截断为 50 个字符)。

[DataMember]
public string FirstName
{
  get { return ...; }
  set { if (value.Length > 50) throw new MyValidationException(); }
}
于 2012-10-01T13:25:04.953 回答