Pregunta

En todo el libro de .NET, he leído la línea de guía para la implementación de eventos explica que necesita subclase EventArgs y use EventHandler. Busqué más información sobre http://msdn.microsoft.com/en-us/library/ms229011.aspx, y dice "Use System.EventHandler en lugar de crear manualmente nuevos delegados para ser utilizados como manejadores de eventos". Entiendo que hay razones importantes para usar EventArgs, pero mi pregunta no es "¿Debería hacerlo de esta manera?", Pero "¿Puedo hacerlo de esta manera?".

¿Hay alguna razón por la que no pueda usar un delegado genérico en lugar de un EventHandler con mis eventos? Por ejemplo, si quiero un remitente fuertemente tipado (cualquier otra persona se molesta por eso object sender?) .

Para explicar lo que quiero decir mejor, ¿hay alguna razón por la que lo siguiente no funcione?

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

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top