【发布时间】:2022-01-16 22:02:32
【问题描述】:
我试图(在 C#8.0 中)实现一个具有泛型类型参数(对委托的约束)的类,该类具有具有相同泛型类型的事件参数。预期目的是进行一些自定义事件处理(订阅和取消订阅功能),同时仍然允许与之关联的任何类型的委托。
public class AEvent<T> where T : Delegate
{
private event T eventData;
public AEvent() { }
}
从上面的代码开始,IDE 给我这个错误:
'eventData':事件必须是委托类型
有人能简单解释一下为什么我不能实现这个吗?或者是否有其他方法可以实现这一目标?
【问题讨论】:
-
你希望引发这个事件吗?请注意,例如
Action<T>、Action<T1, T2>、Action<T1, T2, T3>... 都继承自Delegate。 -
Delegate本身不是委托类型,它是所有委托的基本类型
标签: c# events delegates generic-type-parameters