问题描述
|
我们有一个使用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));
}
}
}