Question

Dans tout le livre .NET, j'ai lu la ligne de guidage pour implémenter des événements explique que vous devez sous-classe EventArgs et utilisez EventHandler. J'ai recherché plus d'informations sur http://msdn.microsoft.com/en-us/library/ms229011.aspx, et il dit "utilisez System.EventHandler au lieu de créer manuellement de nouveaux délégués à utiliser comme gestionnaires d'événements." Je comprends qu'il y a des raisons importantes d'utiliser EventArgs, mais ma question n'est pas "Dois-je le faire de cette façon?", Mais "puis-je le faire de cette façon?".

Y a-t-il une raison pour laquelle je ne peux pas utiliser un délégué générique au lieu d'un EventHandler avec mes événements? Par exemple, si je veux un expéditeur fortement de type (n'importe qui d'autre est ennuyé par cela object sender?) .

Pour expliquer ce que je veux dire, y a-t-il une raison qui suit ne fonctionnera pas?

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;
        }
    }
}

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top