Soy un principiante con C# y no puedo encontrar ninguna respuesta para esto:Cómo delegar la acción correcta <Interface>?
Im tratando de delegar acciones con algún parámetro de la interfaz, pero empujo a través de funciones con los objetos que se extienden esta interfaz (o clase)
// some class extending interface
public class IntEvent : IFace{}
public class MoveEvent : IFace{}
// function i like to use to verify Action
static void setAction(Action<IFace> evt) {
// evt ...
}
// function to delegate as Action
static void evtCheck(IntEvent evt) {
// some func
}
static void evtMove(MoveEvent evt) {
// some func
}
// class {
// call method inside class and delegate this function :
setAction(evtCheck);
setAction(evtMove);
Recibo el error "evtCheck(IntEvent)
no se puede convertir a Action<IFace>
", incluso si IntEvent
amplía la interfaz IFace
.
¿Cómo debo solucionar esto? ¿Tal vez tengo que usar Func o Delegate?
Sí, esto es lo que estoy tratando de hacer. Las funciones de acción siempre esperan un objeto que extienda la misma interfaz u objeto. Bien, miraré el patrón de diseño del visitante. – turbosqel