C # отражение избежать свойства - PullRequest
0 голосов
/ 02 июня 2010

Я использую рефлексию для доступа к классу, который представляет таблицу в DB. Однако рефлексия читает все свойства этого класса, и мне интересно, есть ли какие-нибудь атрибуты в c #, которые мы можем использовать, чтобы избежать чтения этой свойства.

т.е:

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

Ответы [ 2 ]

3 голосов
/ 02 июня 2010
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 голос
/ 02 июня 2010

Если бы вы могли избежать полной доступности, рефлексия не имела бы смысла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...