我使用企业库验证块将验证添加到一组WCF服务中的入站数据对象。
我将[ObjectValidator]
属性添加到我的邮件合同中,如下所示:
[MessageContract]
public class MyRequest
{
public MyRequest()
{
Header = new MyHeader();
Data = new List<MyType>();
}
[ObjectValidator]
[MessageHeader]
public MyHeader Header { get; set; }
[ObjectValidator]
[MessageBodyMember]
public List<MyType> Data { get; set; }
}
和身体的[DataContract]
就是这样:
[DataContract]
public class MyType
{
[Required, DataMember(IsRequired = true)]
[RegularExpressionAttribute(RegexValidation.Name)]
public string Name { get; set; }
[Required, DataMember(IsRequired = true)]
[RegularExpressionAttribute(RegexValidation.Password)]
public string Password { get; set; }
}
我注意到,如果我的MessageContract
设置为List<MyType>
,则验证不会触发。如果我删除List<>
并使用直线MyType
,那么它就会触发。
很明显,企业库代码不会低于列表,而是在List
对象本身中查找验证项。有谁知道怎么解决这个问题?
答案 0 :(得分:0)
真的很简单的回答。在列表中使用ObjectValidator
时,您需要改为使用ObjectCollectionValidator
。