.net EventHandler仅限于从EventArgs继承的模板。怎么做?该实现(请参考vs)显示了以下代码:
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
但是我认为TEventArgs只是一个名字。我该如何写一个类型委托,它限制了从MyClass继承的任何东西?
最佳答案
TEventArgs
是泛型类型参数-但有一个约束。实际的签名是:
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
where TEventArgs : EventArgs
“
where TEventArgs : EventArgs
”位是类型约束,这意味着您只能为TEventArgs
或派生类提供EventArgs
的类型参数。基本上,它只是“常规” C#泛型,仅应用于委托声明。
关于c# - 具有模板的C#Typeresticted委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/711744/