Я хочу получить объект MethodInfo из вызывающего метода, чтобы определить, существует ли специальный атрибут, установленный для этого метода.Тип.GetMethod возвращает allways null
Класс Programm с помощью метода вызова Run()
class Program
{
private static RestHandler _handler = new RestHandler();
static void Main(string[] args)
{
Run();
}
[Rest("GET")]
static void Run()
{
_handler.Handler(typeof(Program));
}
}
Класс, где я хотел бы, чтобы определить пользовательский атрибут
public class RestHandler
{
public void Handler(Type t)
{
StackFrame frame = new StackFrame(1);
var method = frame.GetMethod();
MethodInfo methodInfo = t.GetMethod(method.Name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
var attributes = methodInfo.GetCustomAttributes<RestAttribute>();
}
}
Класс атрибута
public class RestAttribute : Attribute
{
public RestAttribute(string method)
{
Method = method;
}
public string Method { get; set; }
}
Моя проблема в том, что объект MethodInfo (methodInfo
) всегда ноль, даже объект метода из кадра стека установлен правильно. Свойство method.Name
возвращает правильное имя вызывающего метода. Любая идея, почему объект methodInfo
всегда имеет значение null?
Да, действительно. Спасибо. Теперь это работает. – Kris
@ Kris Можете ли вы пометить как ответ, если это так? Благодарю. –