Estoy tratando de crear lo que estoy pensando como una clase de traducción, para que mi programa pueda hablar a una variedad de plataformas de destino. Cada plataforma será manejada por una implementación separada de una clase abstracta. He reducido las cosas por simplicidad.Implementando la implementación de eventos en clases abstractas derivadas
que tienen una clase abstracta, con un par de métodos abstractos:
abstract class ControllerBase
{
public abstract bool EnableDTMFDetection(string CallID, Party Party);
public abstract bool DisableDTMFDetection(string CallID, Party Party);
}
Posteriormente una clase (clases) que se derivan de ControllerBase, y aplicar plenamente esos métodos:
class PlatformOne : ControllerBase
{
public override bool EnableDTMFDetection(string CallID, Party Party)
{
// Do Stuff
return true;
}
public override bool DisableDTMFDetection(string CallID, Party Party)
{
// Do Stuff
return true;
}
}
Hasta ahora tan bueno. Para PlatformOne me veo obligado a definir cada uno de esos métodos, prescribiendo cómo enviaré un mensaje de salida a mi plataforma objetivo.
Son los eventos entrantes los que me han atrapado. Necesito poder subir eventos desde dentro de mis clases derivadas. Cuando agrego lo siguiente para ControllerBase:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Se compila bien, pero no puede provocar el evento desde el interior de mi clase derivada sin el error: "El evento 'ControllerBase.MyEvent' sólo puede aparecer a la izquierda lado de la mano de + = o - = (excepto cuando se usa dentro del tipo 'ControllerBase') "
Entonces, a) ¿Cómo puedo plantear mi evento desde mi clase derivada, y b) ¿alguien puede sugerir un mecanismo para imponer el cableado de eventos especificados desde mi clase derivada (a la funciones abstractas o métodos de interfaz). Gracias :) llama
Parece que necesita leer cómo publicar eventos. Además, si agrega el código relacionado con "MyEvent", eso podría ayudar a responder la pregunta. – Nayan