gpt4 book ai didi

c# - Type.GetMethod 始终返回 null

转载 作者:行者123 更新时间:2023-12-02 21:16:58 27 4
gpt4 key购买 nike

我想从调用方法中获取 MethodInfo 对象,以确定该方法上是否设置了特殊属性。

具有调用方法 Run() 的 Programm 类

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) 始终为 null,即使堆栈帧中的方法对象设置正确。属性method.Name 返回调用方法的正确名称。为什么 methodInfo 对象始终为 null?

最佳答案

这是一个私有(private)方法:

static void Run()

添加 BindingFlags.NonPublic 以通过反射访问它

MethodInfo methodInfo = t.GetMethod(method.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);

关于c# - Type.GetMethod 始终返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33992495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com