イベントを実装するためのガイドラインを読んだすべての .NET 本で、EventArgs
EventHandler をサブクラス化して使用する必要があると説明しています。http://msdn.microsoft.com/en-us/library/ms229011.aspxで詳細を調べたところ、「イベント ハンドラーとして使用する新しいデリゲートを手動で作成する代わりに、System.EventHandler を使用してください」と表示されています。EventArgs を使用する重要な理由があることは理解していますが、私の質問は「このようにすべきか」ではなく、「このようにすることができるか」です。
EventHandler
イベントで の代わりにジェネリック デリゲートを使用できない理由はありますか? たとえば、厳密に型指定された送信者が必要な場合 (他の誰かがそれに悩まされobject sender
ますか?) 。
私が言いたいことをよりよく説明するために、次のことがうまくいかない理由はありますか?
public class IoC
{
public AbstractFactory GetAbstractFactory()
{
var factory = new AbstractFactory();
factory.CreateObject += ()=>new object();
return factory;
}
}
public class AbstractFactory
{
public event Func<object> CreateObject;
private object OnObjectCreated()
{
if(CreateObject == null)
{
throw new Exception("Not injected.");
}
return CreateObject();
}
private object _injectedObject;
public object InjectedObject
{
get
{
if(_injectedObject == null)
{
_injectedObject = OnObjectCreated();
}
return _injectedObject;
}
}
}