Я пытаюсь использовать 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
. Поэтому, когда я получаю атрибуты, он ничего не возвращает.