WCF数据合同集合中的元素验证

问题描述

| 我们有一个使用Microsoft.Practices.EnterpriseLibrary.Validation的WCF服务,并且接收到这样的对象(简化):
[DataMember]
[NotNullValidator]
public string Name { get; set; }

[DataMember]
public IList<Appointment> Appointments { get; set; }
约会数据合同可能看起来像:
[DataMember]
[NotNullValidator]
public string Description { get; set; }
现在的问题是,对Name属性的验证似乎可以正常进行,但是对Description的验证没有得到验证。因此,您不能传递带有空名称的请求,但是可以传递带名称和空列表的约会列表的请求。 WCF不验证DataContract中集合的元素是否正常?     

解决方法

好吧,我们通过添加SelfValidation解决了它:
[HasSelfValidation]
public class Client
{
    [DataMember]
    [NotNullValidator]
    public string Name { get; set; }

    [DataMember]
    public IList<Appointment> Appointments { get; set; }

    [SelfValidation]
    {
        foreach (var appointment in Appointments)
        {
            results.AddAllResults(Validation.Validate(appointment));
        }
    }
}
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...