Poniżej przedstawiono rozwiązanie pozwalające uzyskać atrybuty z pól przy użyciu metody rozszerzenia. Teraz chcę zrobić coś podobnego za pomocą metod zamiast pól.Uzyskiwanie dostępu do atrybutów metod przy użyciu metody rozszerzenia
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;
}
Zastosowanie:
var attr = this.GetMember(x => x.AddButtonVisibility).GetAttribute<Test>();
Więc w moim przypadku użycia powinna wyglądać mniej więcej tak:
var attr = this.GetMethod(x => x.SomeMethod).GetAttribute<Test>();
Jest to możliwe w inny sposób albo muszę spróbować czegoś zupełnie innego ?
Czy otrzymujesz jakieś błędy? Czy nie jest jasne, o co prosisz. To samo powinno odnosić się do MethodInfo – Nkosi
@Nkosi Nie powyższy kod działa, ale chcę zrobić to samo z metodami zamiast z polami. –