0

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

有哪些可用的技术?

(例如 GetMethod().Invoke()、委托、c# 4.0 动态)

谢谢!

4

2 回答 2

2

C# 4.0dynamic功能将是执行此操作的最简单方法。在一个非常真实的意义上,dynamic它只是反射的“包装器”。不过,它是一个非常好的包装器,这可能是您的最佳选择。

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

  • 使用第三方反射库。不知道这些天那里有什么。
  • 编写自己的反射代码。
  • 使用 CodeDOM 创建调用您要调用的方法的代码。
  • 发出与 CodeDOM 生成的代码几乎相同的 IL。
  • 创建 C# 源代码,然后将其编译成可以调用的程序集,然后调用所需的方法。

最后三个不适合胆小的人。最好的办法是使用dynamic或编写自己的反射代码。如果dynamic三年前我为类似的东西编写代码时,我会使用它。

于 2010-12-14T20:06:44.803 回答
0

您可以使用反射来调用直到运行时才知道名称的函数。这是一些文档:

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

于 2010-12-14T18:31:32.623 回答