0

私の現在の状況は次のようになります。

これらの2つのデリゲートを別のファイルに入れています。

public delegate void EventHandler(Object obj, EventArgs e); 
public delegate void OtherEventHandler(Object obj, OtherEventArgs e); 

私は次のEventようなクラスを持っています:

class Event {
   EventHandler _handler;
   public Event(EventHandler handler) {
      _handler = handler;
   }
}

Eventこの方法を継承する別のクラスがあります。

class OtherEvent : Event {
   OtherEventHandler _handler;
   public OtherEvent (OtherEventHandler handler) : base(handler) {
      _handler = handler;
   }
}

これは問題が発生する場所です。エラーはの部分にありbase(handler)ます。handlerinOtherEventはであるためOtherEventHandler、基本クラスはそれを受け入れることができません。基本クラスは。のみを受け入れますEventHandler

私の意図は、「汎用」デリゲートを使用して、からメソッドを継承するときにOtherEvent、クラスフィールドの親とは異なるパラメーターを持つ独自のタイプのデリゲートを柔軟に使用できるようにすることです。EventOtherEventhandler

私の意図を達成するために私は何ができますか?

4

2 に答える 2

1

Whats wrong with usage of default delegate EventHandler<TEventArgs>? It can be parametrized with any type, inherited from EventArgs.

Also I don't really understand purpose of Event class. You can define events simply this way:

public event EventHandler<OtherEventArgs> OtherEvent;
于 2012-10-25T13:07:45.037 に答える
0

おそらく、継承の代わりにジェネリックを使用しますか?

class Event<TEvent>
{
    TEvent _handler;
    public Event(TEvent handler)
    {
        _handler = handler;
    }
}
于 2012-10-25T13:02:06.307 に答える