在我读过的所有 .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;
}
}
}