我想学习使用某些客户端代码想要的签名动态创建方法的巧妙技巧。就像System.Delegate.BeginInvoke
,EndInvoke
和Invoke
方法一样。
我正在查看这些方法的System.Delegate
类,但我找不到它们(除了DynamicInvoke
,这不好玩,因为它无论如何都会动态调度对后期绑定方法的调用),很明显,这些方法都是在运行时完成的。
如果我不得不实施这样的事情,我会怎么做。我在大声思考:
1)代码DOM不起作用,因为我对构建新程序集不感兴趣。我只想在同一个程序集中为类添加一个新方法。
2)好旧的反思会很好。我可以创建一个新的MethodInfo
,它具有与客户端代码指定的参数相同的参数,但是我如何才能将这个新的MethodInfo
内容显示在我的类中作为方法?
有人能说清楚这个吗?
答案 0 :(得分:0)
这个问题的答案是使用System.Reflection.Emit.DynamicMethod
类。要查看工作中的示例,请访问this link。
非常感谢Jon Skeet指导我朝着正确的方向前进。请参阅此问题的评论。