示例:我有这个课程
public class MyClass
{
private string propHead;
private string PropHead { get; set; }
private int prop01;
private int Prop01 { get; set; }
private string prop02;
private string Prop02 { get; set; }
// ... some more properties here
private string propControl;
private string PropControl { get; } // always readonly
}
我需要排除propHead和propControl。 要排除propControl:
MyClass mc = new MyClass();
PropertyInfo[] allProps = mc.GetType().GetProperties().Where(x => x.CanWrite).ToArray();
现在,当所有人都拥有相同级别的可访问性时,我怎么能排除propHead?有没有办法为propHead添加一个特殊属性,让我将其从其他属性中排除。 每个类的属性名称总是不同。
任何建议都会非常令人沮丧。
答案 0 :(得分:1)
这是最简单的方法:
MyClass mc = new MyClass();
PropertyInfo[] allProps = mc.GetType()
.GetProperties()
.Where(x => x.Name != "propHead" && x.Name != "propControl")
.ToArray();
但如果您正在寻找更通用的解决方案,可以试试这个
public class CustomAttribute : Attribute
{
...
}
MyClass mc = new MyClass();
PropertyInfo[] allProps = mc.GetType()
.GetProperties()
.Where(x => x.GetCustomAttributes(typeof(CustomAttribute)).Length > 0)
.ToArray();