イベントの発生に問題があります。これが私の基本クラスです:
public abstract class MyClass<T>
{
public event EventHandler<MessageReceivedEventArgs<T>> MessageReceived;
protected void OnMessageReceived(MyClass<T> sender, MessageReceivedEventArgs<T> e)
{
EventHandler<MessageReceivedEventArgs<T>> handler = MessageReceived;
if (MessageReceived != null)
MessageReceived(sender, e);
}
}
そして私の実装:
public class MyDerivedClass: MyClass<string>
{
void AFunction()
{
// Do some stuff
OnMessageReceived(this, new MessageReceivedEventArgs<string>("data"));
}
が呼び出されると、システムは("Value cannot be null. Parameter name: type") をOnMessageReceived
スローします。System.ArgumentNullException
私はすでにこのスレッドを読んでおり、これもこのコードを作成するのに役立ちます。しかし、これらの例外の理由を見つけることができません (デバッガーでチェックされ、null ではありません) sender
。e
私は何を間違っていますか?
編集:これが私のMessageReceivedEventArgs
実装です:
public class MessageReceivedEventArgs<T> : EventArgs
{
public T Data { get; private set; }
public MessageReceivedEventArgs(T data)
{
Data = data;
}
}