以下は、拡張メソッドを持つフィールドから属性を取得するソリューションです。今ではフィールドの代わりにメソッドで同様のことをしたいと思います。拡張メソッドを使用してメソッドの属性にアクセスする
public static MemberInfo GetMember<T, R>(this T instance, Expression<Func<T, R>> selector)
{
var member = selector.Body as MemberExpression;
return member?.Member;
}
public static T GetAttribute<T>(this MemberInfo meminfo) where T : Attribute
{
return meminfo.GetCustomAttributes(typeof(T)).FirstOrDefault() as T;
}
使用法:
var attr = this.GetMember(x => x.AddButtonVisibility).GetAttribute<Test>();
だから私の場合には使用量が次のようになります。
var attr = this.GetMethod(x => x.SomeMethod).GetAttribute<Test>();
は、どのような方法で可能これですか、私は完全に異なる何かを試してみてください?
エラーが表示されますか?あなたが求めていることは不明ですか?同じことがMethodInfoに適用されるはずです – Nkosi
@Nkosi上記のコードは動作しませんが、フィールドの代わりにメソッドで同じことをしたいのです。 –