【问题标题】:What the various ways of calling a method at runtime?在运行时调用方法的各种方式是什么?
【发布时间】:2010-12-14 17:21:36
【问题描述】:

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

有哪些可用的技术?

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

谢谢!

【问题讨论】:

  • 你已经知道它需要什么了。尽量缩小你的问题范围,这样我们就不必为此写一本书了。
  • @Hans:谢谢,不幸的是我不知道所有选项。发布这个问题后,我发现我也可以发出 IL。至少,我希望有一份技术清单可供进一步研究。谢谢。

标签: c# reflection runtime invoke late-binding


【解决方案1】:

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

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

  • 使用第三方反射 图书馆。不知道外面有什么 这些天。
  • 自己编写 反射代码。
  • 使用 CodeDOM 创建调用您的方法的代码 想打电话。
  • 发射 IL 几乎与 CodeDOM 生成的代码。
  • 创建 C# 然后编译的源代码 成一个你可以调用的程序集, 这反过来又调用了所需的 方法。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      相关资源
      最近更新 更多