2

示例:我有这门课

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 添加一个特殊属性,让我将其排除在其他属性之外。每个类中的属性名称总是不同的。

任何建议都会非常感激。

4

1 回答 1

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();
于 2013-03-18T05:31:34.807 回答