我使用反射来访问一个代表DB中的表的类。但是,反射读取了该类的所有属性,我想知道在c#中是否有一些属性可以用来避免读取该属性。
即:
[AvoidThisPropertie]
public string Identity
{
get;
set;
}
答案 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)
如果你可以避免完全无障碍,那么反思就没有意义了