Во всей книге .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;
}
}
}