在运行时调用方法的各种方法是什么?

时间:2010-12-14 17:21:37

标签: c# reflection runtime invoke late-binding

我需要在对象上调用一个方法,但直到运行时我才知道方法名称。

有哪些可用的技术?

(例如GetMethod()。Invoke(),delegates,c#4.0 dynamic)

谢谢!

2 个答案:

答案 0 :(得分:2)

C#4.0 dynamic功能将是最简单的方法。从一个非常真实的意义上说,dynamic只是一个围绕着反射的包装器。这是一个非常好的包装器,但这可能是你最好的选择。

其他方式,大致增加难度:

  • 使用第三方反射 图书馆。不确定那里有什么 这些天。
  • 自己写 反思代码。
  • 使用CodeDOM 创建调用方法的代码 想打电话。
  • 发出IL的确如此 几乎和它一样 CodeDOM生成的代码。
  • 创建C# 然后编译的源代码 进入你可以打电话的集会, 而这反过来调用所需的 方法

最后三个不适合胆小的人。您最好的选择是使用dynamic或编写自己的反射代码。如果我在三年前编写类似的代码时遇到dynamic,我就会使用它。

答案 1 :(得分:0)

您可以使用Reflection来调用您不知道运行时名称的函数。这是一些文档:

http://msdn.microsoft.com/en-us/library/f7ykdhsy%28VS.80%29.aspx