Есть ли особая связь между классом EventArgs и ключевым словом события?

Во всей книге .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;
        }
    }
}
5
задан smartcaveman 8 February 2011 в 21:56
поделиться