Если я правильно понял ваш вопрос, вы хотите получить внутри кода атрибута объект (в данном случае метод), к которому применяется атрибут.
Я почти уверен, что прямого пути для этого не существует - атрибут не знает об объекте, к которому он прикреплен, эта ассоциация наоборот.
Лучшее, что я могу вам предложить, это обходной путь, подобный следующему:
using System;
using System.Reflection;
namespace test {
[AttributeUsage(AttributeTargets.Method)]
public class AAttribute : Attribute {
public AAttribute(Type type,string method) {
MethodInfo mi = type.GetMethod(method);
}
}
public class B {
[A(typeof(B),"BMethod1")]
public void BMethod1() {
}
}
}
Примечание
Чего вы хотите достичь, получая доступ к MethodInfo внутри конструктора атрибута? Может быть, есть альтернативный способ достичь своей цели ...
EDIT
В качестве другого возможного решения вы можете предоставить статический метод в вашем атрибуте, который выполняет проверку, но это включает в себя итерации по MethodInfos.
using System;
using System.Reflection;
namespace test {
[AttributeUsage(AttributeTargets.Method)]
public class AAttribute : Attribute {
public static void CheckType<T>() {
foreach (MethodInfo mi in typeof(T).GetMethods()) {
AAttribute[] attributes = (AAttribute[])mi.GetCustomAttributes(typeof(AAttribute), false);
if (0 != attributes.Length) {
// do your checks here
}
}
}
}
public class B {
[A]
public void BMethod1() {
}
[A]
public int BMethod2() {
return 0;
}
}
public static class Program {
public static void Main() {
AAttribute.CheckType<B>();
}
}
}