我想定义非泛型委托延伸的泛型委托来定义泛型委托类型参数的默认,即是这样的(不是有效的一段C#代码,但一个明显易懂的插图概念我的意思是希望):如何在C#中使用非泛型委托类型扩展泛型委托类型?
public delegate void MyDelegate<T>(T arg);
public delegate void MyDelegate(object arg) : MyDelegate<object>;
什么是,如果有的话,正确的方式来声明呢?
不用说,我可以只申报2个独立的代表达到几乎同样的效果这样的方式:
public delegate void MyDelegate<T>(T arg);
public delegate void MyDelegate(object arg);
,但我想这样做,使他们之间的实际关系(其实裸MyDelegate
型是指等于MyDelegate<object>
,就像一个类扩展另一个类或直译)明确的方式,使下面的代码将成为可能的话有效:
MyDelegate<object> d1;
MyDelegate d2;
MyDelegate d1 = d2;
委托类型是密封的,你应该清楚地知道。它们不能被继承。什么是你[究竟意欲何为?(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。通过这种方式表达你的委托声明,你会获得什么?请注意,在某种意义上,代表是单成员接口。因此,如果您真的需要这样做,那么很可能将您的关系表达为“接口”类型,而不是“委托类型”更合适。 –
@PeterDuniho我觉得这样尴尬,但我不知道他们在密封的想法,以检查他们是否是还没有进入我的脑海: - ]谢谢你告诉。您可以将此作为答案提交,如果可以,我会接受。我用一个我想要实现的例子来扩展这个问题。 – Ivan