为了账号安全,请及时绑定邮箱和手机立即绑定

反射题:如何根据参数得到重载的泛型方法的MethodInfo

反射题:如何根据参数得到重载的泛型方法的MethodInfo

哆啦的时光机 2018-10-21 08:05:54
比如有以下定义class Program    {        public static void F<T>()        {        }        public static void F<T>(T a)        {        }}使用typeof(Program).GetMethod("F")会抛AmbiguousMatchException。如何才能获取到某个方法的MethodInfo呢
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

msdn:

当绑定到成员的操作导致一个以上的成员匹配绑定条件时引发的异常。无法继承此类。

当成员是以后期绑定的形式被调用且多个重载满足绑定条件时,或者当有多个成员与传递给仅能返回单个结果的反射方法(例如,Type..::.GetMethod 或Type..::.GetProperty)的绑定条件匹配时,引发 AmbiguousMatchException。

1就是你F方法有两个重载,一个得话你那样就不会有错了。GetMethod方法不是还有很多重载啊,有一个可以指定参数类型,用哪个就没问题了。

2或者使用GetMethods(“F”)


查看完整回答
反对 回复 2018-10-24
?
跃然一笑

TA贡献1826条经验 获得超6个赞

我也碰到了这样的问题,如果没有出现多个方法重载的话,是直接通过方法名来获取的,但是有重载就活报你说的那种异常,我现在的方法就是避免方法重载。

查看完整回答
反对 回复 2018-10-24
  • 2 回答
  • 0 关注
  • 431 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信