有没有办法在c#中检查特定值的类的属性

时间:2010-04-12 10:30:27

标签: c#

我有一个License类。有50个布尔属性和一些时间戳属性。如果所有这50个属性都是假的,我想通知用户。

一种方法是使用50 if if if条件。另一种方式是反射,这对于这件事似乎有点过分。请提出其他一些建议。我正在使用.Net framework 3.5

3 个答案:

答案 0 :(得分:3)

你当然可以用反射做到这一点:

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
}

我不确定你想对时间戳属性做什么......

答案 1 :(得分:1)

你能改变班级的结构吗?

在这种情况下,如果以某种方式连接布尔值,您可以使用以下内容:

然后检查值只需使用forforeach循环。

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

答案 2 :(得分:0)

你应该看一下Indexed Property。您可以将检查封装到License的只读属性中:

private List<Boolean> props;

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