【问题标题】:Generics with Event automatically generated具有自动生成事件的泛型
【发布时间】:2011-10-04 20:04:59
【问题描述】:

我正在尝试创建一个通用类。该课程将有一些通用事件。是否可以创建类似的通用事件处理程序

class MyClass<T> 
{
    public event EventArgs SomeEventClass();
}

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

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

【问题讨论】:

  • 不清楚你到底想要什么...为什么需要EventClass?它与泛型有什么关系?

标签: c# events generics


【解决方案1】:

你想要这样的东西吗....

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 方法

【讨论】:

    【解决方案2】:

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

    代码生成可能正是您想要的。

    【讨论】:

    • 我相信 OP 不想要“通用”名称,即使代码示例可能表明这一点。
    【解决方案3】:

    这是你想要的吗?

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

    【讨论】:

    • 所有事件都应该遵循标准的 EventHadler 模式,以便与其他代码兼容。
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多