上下文相关验证

时间:2010-06-17 14:54:45

标签: c# validation data-annotations

我希望能够使用.NET 4中的DataAnnotations验证不同上下文中的对象。

例如:如果我有一个带有这些带注释属性的类

[Required]
public string Name { get; set; }

[Required]
public string PhoneNumber { get; set; }

[Required]
public string Address { get; set; }

我希望能够做类似

的事情
bool namePhoneValid = Validator.TryValidateObject(entity, contextNamePhone, results1);
bool allValid = Validator.TryValidateObject(entity, contextAll, results2);

其中contextNamePhone仅验证名称和电话,而contextAll验证所有属性(在这种情况下为姓名,电话和地址)。

这可能吗?如何构建验证上下文?还有其他/更聪明的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以向您的类添加自定义属性,使用类型反射在运行时获取属性内容,然后编写您自己的验证器以根据不同条件验证属性。

http://oreilly.com/catalog/progcsharp/chapter/ch18.html