是否可以扩展System.Delegate?

Pra*_*ter 2 delegates cil

无法从C#中继承System.Delegate或System.MulticastDelegate.只要您声明标准的"运行时管理"方法,就可以在MSIL中完成它.但是,每次我在类型中添加"cil managed"方法时,我都会得到:

System.TypeLoadException:运行时实现的委托方法的非法定义.

是否可以扩展Delegate/MulticastDelegate?

Jon*_*eet 8

在C#中没有自己的自定义代码.从C#3.0规范的10.1.4节:

直接基类的类类型的不能是以下任一类型的:System.Array,System.Delegate, System.MulticastDelegate,System.Enum,或System.ValueType.此外,泛型类声明不能 System.Attribute用作直接或间接基类.

但是,每次创建委托类型时,都会自动派生MulticastDelegate.

ECMA-335,第8.9.3节:

虽然在大多数情况下,代表似乎只是另一种用户定义的类,但它们受到严格控制.这些方法的实现由VES提供,而不是用户代码.可以在委托类型上定义的唯一其他成员是静态或实例方法.

这听起来像是禁止施工人员.我个人使用普通类型的静态方法.