有没有什么办法来检查类的属性在C#

问题描述:

一个特定的值我有一个许可证class.There是50级布尔性能和一定的时间戳记属性。如果所有这50个属性都是错误的,我想通知用户。有没有什么办法来检查类的属性在C#

一种方法是用50,如果,如果conditions.other方式是反射这似乎矫枉过正了这件事情。请以其他方式提出建议。我使用的.NET Framework 3.5的

你当然可以与反思这样做...

+0

先生,你会在这种情况下建议(上面提到的方式或加入50 IF) – Rohit 2010-04-12 10:40:47

+0

@乔恩,如果您有许可证列表,你会怎么更换'用嵌套查询instance'?这甚至有可能吗? – 2010-04-12 10:47:18

+0

@Rohit:这当然比50个ifs简单...但是我不确定我想在这个类型上使用50个属性。 – 2010-04-12 11:45:50

您可以更改类的strucutre?

在这种情况下,如果布尔值有着某种关联,你可以使用以下命令:

然后检查值只使用一个forforeach环。

除此之外,反射是你的朋友。

你应该看看一个Indexed Property。你可以封装支票存入许可证的只读属性:

var values = from prop in typeof(License).GetProperties() 
      where prop.PropertyType == typeof(bool) 
      select (bool) prop.GetValue(instance, null); 

if (!values.Any(x => x)) 
{ 
    // Nope, everything's false 
} 

我不知道你想做的事有关timestamp属性是什么:

private List<Boolean> props; 

public bool IsExpired 
{ 
    get { return !props.Any(p => p); } 
}