有没有什么办法来检查类的属性在C#
问题描述:
一个特定的值我有一个许可证class.There是50级布尔性能和一定的时间戳记属性。如果所有这50个属性都是错误的,我想通知用户。有没有什么办法来检查类的属性在C#
一种方法是用50,如果,如果conditions.other方式是反射这似乎矫枉过正了这件事情。请以其他方式提出建议。我使用的.NET Framework 3.5的
答
你当然可以与反思这样做...
答
您可以更改类的strucutre?
在这种情况下,如果布尔值有着某种关联,你可以使用以下命令:
然后检查值只使用一个for
或foreach
环。
除此之外,反射是你的朋友。
答
你应该看看一个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); }
}
先生,你会在这种情况下建议(上面提到的方式或加入50 IF) – Rohit 2010-04-12 10:40:47
@乔恩,如果您有许可证列表,你会怎么更换'用嵌套查询instance'?这甚至有可能吗? – 2010-04-12 10:47:18
@Rohit:这当然比50个ifs简单...但是我不确定我想在这个类型上使用50个属性。 – 2010-04-12 11:45:50