Получение атрибута из переопределенного свойства с помощью выражения linq.

Я пытаюсь использовать GetCustomAttributes()для получения атрибута. определено на свойстве. Проблема в том, что свойство является переопределенным, и я не могу понять, как извлечь переопределенное из выражения. Я могу только понять, как получить базовый класс.

Вот код

public class MyAttribute : Attribute 
{
  //... 
}

public abstract class Text
{
  public abstract string Content {get; set;}
}

public class Abstract : Text
{
  [MyAttribute("Some Info")]
  public override string Content {get; set;}
}

Теперь я пытаюсь получить MyAttributeиз абстрактного класса. Но мне нужно получить его через Expression. Вот что я использовал:

Expression<Func<Abstract, string>> expression =  c => c.Content;
Expression exp = expression.Body;
MemberInfo memberType = (exp as MemberExpression).Member;

var attrs = Attribute.GetCustomAttributes(memberType, true);

К сожалению, attsоказывается пустым. Проблема в том, что menberTypeоказывается для класса Text.Contentвместо класса Abstract.Content. Поэтому, когда я получаю атрибуты, он ничего не возвращает.

6
задан Cœur 22 January 2017 в 15:10
поделиться