带有事件自动生成的泛型

本文关键字:泛型 自动生成 事件 | 更新日期: 2023-09-27 18:10:30

我正在尝试创建一个通用类。这个类会有一些通用事件。是否可以创建像

这样的通用事件处理程序?
class MyClass<T> 
{
    public event EventArgs SomeEventClass();
}

其中EventClass的类名是由泛型同时使用基类创建的。

我正在有效地尝试在事件处理程序中传递东西,并希望它们对调用者来说是类型安全的。

带有事件自动生成的泛型

您想要这样的东西....

class MyClass<T> 
{
   public event EventHandler<EventArgs<T>> SomeEvent;
   protected void RaiseEvent(T data)
   {
      var tmp = SomeEvent;
      if(tmp != null)
         tmp(this, new EventArgs<T>(data));
    }
}

您将需要创建通用的EventArgs,但这应该很容易。您可以派生基类并使用特定的泛型参数

调用RaiseEvent方法

在任何上下文中都不能用泛型指定名称。它们用于指定类型

代码生成可能是您正在寻找的。

这是你想要的吗?

class MyClass<T> 
{
    public event Func<T> GenericEvent;
}