【发布时间】:2009-04-15 16:11:34
【问题描述】:
在 C# 中不能从 System.Delegate 或 System.MulticastDelegate 继承。只要您声明标准的“运行时托管”方法,就完全可以在 MSIL 中执行此操作。但是,每次我向类型添加“cil 管理”方法时,我都会得到:
System.TypeLoadException:运行时实现的委托方法的定义非法。
是否可以扩展 Delegate/MulticastDelegate?
【问题讨论】:
-
出于好奇,您想通过扩展 Delegate 类来添加什么?
-
将 Target 和 Method 作为字符串(而不是 IntPtr)的构造函数。
-
为什么不在其他地方有一个静态方法来做同样的事情呢?对我来说听起来要简单得多,而且对于维护代码的人来说也不那么出人意料。
-
为了扩展 Jon 的建议,您似乎可以在这里使用工厂模式,至少将委托的创建从用户那里抽象出来,并获得您想要的调用模式。
-
这就是我们在 CCC (Completely Cryptic Code), Inc. 中做事的方式:)