Как получить атрибут на свойство в свойстве получить или установить тело - PullRequest
1 голос
/ 14 января 2011

Возможно ли получить атрибут по свойству в свойстве get или задать тело без StackFrame?

например

[SomeAttribute]
public int SomeProp
{
    get
    {
        //Get of SomeAttribute is set on this property
    }
    set
    {
        //Get of SomeAttribute is set on this property
    }
}

1 Ответ

1 голос
/ 14 января 2011

Вы можете написать такую ​​функцию и получить имя свойства по выражению, а не по строке lliterals

public string Item(this T obj, Expression<Func<T, object>> expression) 
{
    if (expression.Body is MemberExpression)
    {
        return ((MemberExpression)expression.Body).Member.Name;
    }
    if (expression.Body is UnaryExpression)
    {
        return ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member.Name;
    }
    throw new InvalidOperationException();
}

Использование:

public int SomeProp
{
  get 
  { 
     var attribs = 
           this.GetType().GetProperty(this.Item(o => o.SomeProp)).Attributes;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...