在我讀過的所有.NET書籍中,實現事件的指南都解釋說您需要子類EventArgs
並使用EventHandler。我查了一下http://msdn.microsoft.com/en-us/library/ms229011.aspx的更多信息,它說:「請使用System.EventHandler,而不是手動創建新的委託來用作事件處理程序。」我明白使用EventArgs有很重要的理由,但我的問題不是「我應該這樣做嗎?」,而是「我可以這樣做嗎?」。EventArgs類和event關鍵字之間是否存在特殊關聯?
有沒有,我不能使用一個通用的委託,而不是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;
}
}
}
我已經完成了這個來實現類似於可觀察集合的東西。 – asawyer 2011-02-08 22:04:36
相關話題:http://stackoverflow.com/questions/4828212/should-eventhandler-always-be-used-for-events/4828233返回 – CodesInChaos 2011-02-08 22:06:01