我想您想确保所有属性都已填写。
更好的选择可能是将该验证放入类的构造函数中,如果验证失败,则抛出异常。这样,您将无法创建无效的类;捕获异常并进行相应处理。
流利的验证是一个不错的框架(http://fluentvalidation.codeplex.com),用于进行验证。例:
public class CustomerValidator: AbstractValidator<Customer>
{
public CustomerValidator()
{
RuleFor(customer => customer.Property1).NotNull();
RuleFor(customer => customer.Property2).NotNull();
RuleFor(customer => customer.Property3).NotNull();
}
}
public class Customer
{
public Customer(string property1, string property2, string property3)
{
Property1 = property1;
Property2 = property2;
Property3 = property3;
new CustomerValidator().ValidateAndThrow();
}
public string Property1 {get; set;}
public string Property2 {get; set;}
public string Property3 {get; set;}
}
用法:
try
{
var customer = new Customer("string1", "string", null);
} catch (ValidationException ex)
{
}
PS-在这种情况下使用反射只会使您的代码难以阅读。如上所示,使用验证可以清楚地知道您的规则是什么;您可以轻松地用其他规则扩展它们。