Во всей книге .NET, которую я читал, руководство по реализации событий объясняет, что вам необходимо создать подкласс EventArgs
и используйте EventHandler. Я нашел дополнительную информацию на http://msdn.microsoft.com/en-us/library/ms229011.aspx , и там написано: «Используйте System.EventHandler вместо того, чтобы вручную создавать новые делегаты, которые будут использоваться. как обработчики событий ". Я понимаю, что есть важные причины для использования EventArgs, но мой вопрос не «Следует ли мне сделать это таким образом?», А «Могу ли я сделать это таким образом?».
Есть ли причина, по которой я не могу использовать универсальный делегат вместо EventHandler
с моими событиями? Например, если мне нужен строго типизированный отправитель (кого-то еще раздражает этот объект-отправитель
?).
Чтобы лучше объяснить, что я имею в виду, есть ли причина, по которой следующее не работает?
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;
}
}
}