0

我想学习使用某些客户端代码想要的签名动态创建方法的巧妙技巧。就像System.Delegate.BeginInvoke,EndInvokeInvoke方法一样。

我正在System.Delegate类中查找这些方法,但找不到它们(除了DynamicInvoke,这并不有趣,因为它无论如何都会动态地调度对后期绑定方法的调用),因此显然这些方法是在运行时创建的。

如果我必须实施这样的事情,我会怎么做,我正在摸不着头脑。我在大声思考:

1) 代码 DOM 不起作用,因为我对构建新程序集不感兴趣。我只想在同一个程序集中的一个类中添加一个新方法。

2)好的旧反射会很好用。我可以创建一个MethodInfo与客户端代码指定的参数相同的新对象,但是如何让这个新事物MethodInfo作为方法出现在我的类中?

任何人都可以阐明这一点吗?

4

1 回答 1

0

这个问题的答案是使用System.Reflection.Emit.DynamicMethod类。要查看工作示例,请访问此链接

非常感谢 Jon Skeet 引导我朝着正确的方向前进。请参阅对此问题的评论。

于 2013-01-21T10:31:19.113 回答