日期:2014-05-20  浏览次数:20799 次

System.MulticastDelegate如何继承
MulticastDelegate是抽象类,为什么不可以继承它,有什么方法可以继承吗?
MSDN上说不能显式地从此类进行派生

------解决方案--------------------
支持,这都被你发现了
------解决方案--------------------
这个类是受系统保护的,和平台架构有关系类。
我想如同java的string重载了加号运算符但java开发者却不能进行运算符重载一样,.net平台也有其自身实现但不允许开发者用的功能。

这些类也可能不是跑在CLR上的,也就是说是用C++之类的语言开发的。
------解决方案--------------------
MSDN说:
MulticastDelegate 是一个特殊类。编译器和其他工具可以从此类派生,但是您不能显式地从此类进行派生。Delegate 类也是如此。


------解决方案--------------------
使用CIL可以实现,C#编译器不可以。建议看下这个
http://wenku.baidu.com/view/c3bb46ee4afe04a1b071deff.html
------解决方案--------------------
使用delegate定义委托其实就是在继承MulticastDelegate类,因为委托本质上就是一个类
------解决方案--------------------
探讨
 MulticastDelegate的作用相当于C/C++中函数指针。但是需要注意的是MulticastDelegate在C#源代码中是不可被继承的,它只能在IL中被继承。使用IL生成的代码被译成C#源码如下如示:

public sealed class Method_delegate : MulticastDelegate
{
public Method_delegate(obj……