带模板的C#类型受限委托
.net EventHandler仅限于从EventArgs继承的模板。这是怎么做到的?实现(在vs中获得引用)显示以下代码:带模板的C#类型受限委托,c#,templates,delegates,limit,C#,Templates,Delegates,Limit,.net EventHandler仅限于从EventArgs继承的模板。这是怎么做到的?实现(在vs中获得引用)显示以下代码: [Serializable] public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); [可序列化] 公共委托void EventHandler(对象发送方,TEventArgs e); 但我认为TEventArgs只是一个名字。如何编写一个类型化委托,该委托仅
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
[可序列化]
公共委托void EventHandler(对象发送方,TEventArgs e);
但我认为TEventArgs只是一个名字。如何编写一个类型化委托,该委托仅限于从MyClass继承的任何内容?
TEventArgs
是一个泛型类型参数,但它有一个约束。实际签名为:
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
where TEventArgs : EventArgs
[可序列化]
公共委托void事件处理程序(对象发送方,TEventArgs e)
其中TEventArgs:EventArgs
“其中TEventArgs:EventArgs
”位是类型约束,这意味着您只能为TEventArgs
或派生类提供类型参数
基本上,它只是“普通”C#泛型,只是应用于委托声明。
TEventArgs
是泛型类型参数,但它有一个约束。实际签名为:
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
where TEventArgs : EventArgs
[可序列化]
公共委托void事件处理程序(对象发送方,TEventArgs e)
其中TEventArgs:EventArgs
“其中TEventArgs:EventArgs
”位是类型约束,这意味着您只能为TEventArgs
或派生类提供类型参数
基本上,它只是“普通”C#泛型,只是应用于委托声明。如果我查看Jon Skeet的代码,我可以在2秒钟内看到解决方案。我使用了两个答案,不想错过文档的链接,但我只能将一个答案标记为正确。添加链接不是错误;)但是也要写下明显的部分。如果我看一下Jon Skeet的代码,我可以在2秒钟内看到解决方案。我使用了两个答案,不想错过文档的链接,但我只能将一个答案标记为正确。添加链接不是错误;)但也要把明显的部分写下来。