List <mytype> </mytype>上的ObjectValidator

时间:2015-03-20 16:17:04

标签: c# wcf enterprise-library

我使用企业库验证块将验证添加到一组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对象本身中查找验证项。有谁知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

真的很简单的回答。在列表中使用ObjectValidator时,您需要改为使用ObjectCollectionValidator