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

有哪些技术可用?

(例如getMethod()。Invoke(),委托,C#4.0动态)

谢谢!

有帮助吗?

解决方案

C#4.0 dynamic 功能将是最简单的方法。从非常真实的意义上 dynamic 是围绕反思的“只是包装纸”。这是一个非常 好的 不过,包装器可能是您的最佳选择。

其他方式,大约增加了困难水平:

  • 使用第三方反思库。不确定这些天有什么。
  • 编写自己的反射代码。
  • 使用编码来创建调用您要调用的方法的代码。
  • 发射IL与编码生成的代码几乎相同的事情。
  • 创建C#源代码,然后将其编译为可以调用的组件,然后又调用所需方法。

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

其他提示

您可以使用反射来调用您在运行时间之前不知道名称的功能。这是一些文档:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top