在运行时创建一个新方法

时间:2013-01-21 10:08:46

标签: c#

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

我正在查看这些方法的System.Delegate类,但我找不到它们(除了DynamicInvoke,这不好玩,因为它无论如何都会动态调度对后期绑定方法的调用),很明显,这些方法都是在运行时完成的。

如果我不得不实施这样的事情,我会怎么做。我在大声思考:

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

2)好旧的反思会很好。我可以创建一个新的MethodInfo,它具有与客户端代码指定的参数相同的参数,但是我如何才能将这个新的MethodInfo内容显示在我的类中作为方法?

有人能说清楚这个吗?

1 个答案:

答案 0 :(得分:0)

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

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