gpt4 book ai didi

c# 反射查找重载方法 wr 到继承

转载 作者:行者123 更新时间:2023-11-30 17:11:10 26 4
gpt4 key购买 nike

当我有一个类型要传递给该方法时,我试图通过反射找到最合适的调用方法。

让我担心的极端情况是使用相同数量的参数重载,如下所示:

class UserClass {}
class UserClassB : UserClass {}

class SomeClass {
void method(object x);
void method(UserClass x);
}

在运行时我有兴趣调用方法,而我手头的类型是UserClassB

最合适的是method(UserClass)

问题是当使用 typeof(SomeClass).GetMethod("method", new Type[] { typeof(UserClass2) })); 时它会返回一个 null,因为我认为它根据传递的类型的精确匹配进行搜索。

有什么想法吗?谢谢。

最佳答案

您缺少绑定(bind)标志。使用可以传递以下标志的重载:
BindingFlags.实例 | BindingFlags.NonPublic

您得到的是 null,因为 GetMethod 将寻找公共(public)方法,除非您指定您也需要非公共(public)方法。

var method = typeof(SomeClass).GetMethod("method", BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(UserClass) },null);

关于c# 反射查找重载方法 wr 到继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541600/

26 4 0
文章推荐: javascript - 如何将加载到 中的元素样式设置为数据