Sto cercando di creare quello che sto pensando come una classe di traduzione, in modo che il mio programma possa parlare a una varietà di piattaforme di destinazione. Ogni piattaforma sarà gestita da un'implementazione separata di una classe astratta. Ho ridotto le cose per semplicità.Applicazione dell'implementazione di eventi nelle classi astratte derivate
devo una classe astratta, con un paio di metodi astratti:
abstract class ControllerBase
{
public abstract bool EnableDTMFDetection(string CallID, Party Party);
public abstract bool DisableDTMFDetection(string CallID, Party Party);
}
Successivamente una classe (classi) che derivano da ControllerBase, e attuare pienamente quei metodi:
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;
}
}
Finora così buono. Per PlatformOne sono costretto a definire ciascuno di questi metodi, prescrivendo come invierò un messaggio in uscita alla mia piattaforma di destinazione.
Sono gli eventi in arrivo che mi hanno colpito. Devo essere in grado di generare eventi dalle mie classi derivate. Quando aggiungo quanto segue per controllerbase:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Si compila bene, ma non posso generare l'evento da dentro il mio classe derivata senza l'errore: "L'evento 'ControllerBase.MyEvent' può apparire solo a sinistra lato mano di + = o - = (tranne quando usato all'interno del tipo 'ControllerBase') "
Quindi, a) Come posso aumentare il mio evento dalla mia classe derivata eb) qualcuno può suggerire un meccanismo per imporre il cablaggio di eventi specifici all'interno della mia classe derivata (funzioni astratte o metodi di interfaccia). Grazie :) chiama
Sembra che tu abbia bisogno di leggere come aumentare gli eventi. Inoltre, se aggiungi il codice relativo a "MyEvent", ciò potrebbe aiutarti a rispondere alla domanda. – Nayan