Domanda

In tutto il libro .NET ho letto la riga di guida per l'implementazione di eventi spiega che è necessario sottoclasse EventArgs e usa EventHandler. Ho cercato più informazioni su http://msdn.microsoft.com/en-us/library/ms229011.aspx, e dice "Usa System.EventHandler invece di creare manualmente nuovi delegati da utilizzare come gestori di eventi". Capisco che ci sono motivi importanti per usare EventArgs, ma la mia domanda non è "dovrei farlo in questo modo?", Ma "posso farlo in questo modo?".

C'è qualche motivo per cui non posso usare un delegato generico anziché un EventHandler Con i miei eventi? Ad esempio, se voglio un mittente fortemente (chiunque altro ne è infastidito object sender?) .

Per spiegare cosa intendo meglio, c'è qualche motivo per cui i seguenti non funzionano?

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

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top