运行时调用方法的各种方式?
-
10-10-2019 - |
题
我需要在对象上调用方法,但在运行时我不知道方法名称。
有哪些技术可用?
(例如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
不隶属于 StackOverflow