.net - 如何使用反射调用 .NET 中的重载方法

标签 .net reflection .net-2.0 invoke overloading

有没有办法在.NET(2.0)中使用反射来调用重载方法。我有一个应用程序动态实例化从公共(public)基类派生的类。出于兼容性目的,此基类包含 2 个同名的方法,一种带参数,一种不带参数。我需要通过 Invoke 方法调用无参数方法。现在,我得到的只是一个错误,告诉我我正在尝试调用一个不明确的方法。

是的,我可以将对象强制转换为我的基类的实例并调用我需要的方法。最终将会发生,但目前,内部并发症不允许它发生。

任何帮助都会很棒!谢谢。

最佳答案

您必须指定所需的方法:

class SomeType 
{
    void Foo(int size, string bar) { }
    void Foo() { }
}

SomeType obj = new SomeType();
// call with int and string arguments
obj.GetType()
    .GetMethod("Foo", new Type[] { typeof(int), typeof(string) })
    .Invoke(obj, new object[] { 42, "Hello" });
// call without arguments
obj.GetType()
    .GetMethod("Foo", new Type[0])
    .Invoke(obj, new object[0]);

关于.net - 如何使用反射调用 .NET 中的重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223495/

相关文章:

.net - 使用 OpenCV 的感兴趣区域

java - 不使用反射实例化类对象

c# - 通过 lambda 表达式传递属性名称以读取属性值

c# - 如何存储对静态类的引用?

.net - 静态和默认构造函数

c# - MySql gridview 更新命令

c# - 如何重写以下行以在 .NET 2.0 上工作?

c# - 何时使用泛型和类型检查?

c# - 如何将值格式化为没有百分号的百分比?

.net - Union、Intersect 和 Except 的非 LINQ 实现