我有一个License类。有50个布尔属性和一些时间戳属性。如果所有这50个属性都是假的,我想通知用户。
一种方法是使用50 if if if条件。另一种方式是反射,这对于这件事似乎有点过分。请提出其他一些建议。我正在使用.Net framework 3.5
答案 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)
答案 2 :(得分:0)
你应该看一下Indexed Property。您可以将检查封装到License的只读属性中:
private List<Boolean> props;
public bool IsExpired
{
get { return !props.Any(p => p); }
}