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