列表中的 ObjectValidator<MyType>
ObjectValidator on a List<MyType>
我正在使用企业库验证块在一套 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
对象本身中寻找验证项。有谁知道如何解决这个问题?
真的很简单的答案。在列表中使用 ObjectValidator
时,您需要使用 ObjectCollectionValidator
代替。
我正在使用企业库验证块在一套 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
对象本身中寻找验证项。有谁知道如何解决这个问题?
真的很简单的答案。在列表中使用 ObjectValidator
时,您需要使用 ObjectCollectionValidator
代替。