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

问题描述:

我需要调用对象的方法,但直到运行时才知道方法名称。在运行时调用方法的各种方法是什么?

有什么技术可用?

(例如GetMethod()调用(),委托,C#4.0动态)

谢谢!

+5

你已经知道需要什么了。尽量缩小你的问题的范围,所以我们不必写一本关于它的书。 – 2010-12-14 17:25:45

+0

@Hans:谢谢,不幸的是我不知道所有的选项。发布这个问题后,我发现我也可以发射IL。至少我希望有进一步研究的技术清单。谢谢。 – 2010-12-14 17:41:43

的C#4.0 dynamic功能将是做到这一点的最简单的方法。在一个非常真实的意义上,dynamic仅仅是“反射”的一个包装。这是一个很好的好的包装,但是,这可能是你最好的选择。

其他方式,大约增加了难度级别:

  • 使用第三方的反思 库。不知道这些天有什么 。
  • 编写自己的 反射代码。
  • 使用CodeDOM至 创建代码,该代码调用您要调用的方法 。
  • Emit IL确实是 与CodeDOM生成的代码的 差不多。
  • 创建C# 源代码,然后将 编译为可以调用的程序集, 然后调用所需的 方法。

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

您可以使用Reflection调用直到运行时才知道名称的函数。下面是一些文档:

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