繁体   English   中英

Type.GetMethod返回始终为null

[英]Type.GetMethod returns always null

我想从调用方法中获取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?

这是一个私有方法:

static void Run()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM