C#反射避免属性

时间:2010-06-01 23:05:27

标签: c# reflection

我使用反射来访问一个代表DB中的表的类。但是,反射读取了该类的所有属性,我想知道在c#中是否有一些属性可以用来避免读取该属性。

即:

[AvoidThisPropertie]
public string Identity
{
get;
set;
}

2 个答案:

答案 0 :(得分:3)

PropertyInfo [] properties = MyType.GetProperties(
    BindingFlags.Instance | BindingFlags.Public);

IList<PropertyInfo> crawlableProperties = properties.Where(
    p => p.GetCustomAttributes(
        typeof(AvoidThisProperty), true)
        .Count() == 0);

您还必须创建AvoidThisProperty

[AttributeUsage(AttributeTargets.Property)]
public class AvoidThisPropertyAttribute : Attribute
{
   // Doesn't need a body
}

您仍然可以访问所有属性,但LINQ语句将生成所需属性的列表。

答案 1 :(得分:1)

如果你可以避免完全无障碍,那么反思就没有意义了