J'essaie de créer ce que je considère comme une classe de traduction, afin que mon programme puisse parler à une variété de plates-formes cibles. Chaque plate-forme sera gérée par une implémentation distincte d'une classe abstraite. J'ai paré les choses pour des raisons de simplicité.Mise en œuvre de l'implémentation d'événements dans des classes abstraites dérivées
J'ai une classe abstraite, avec quelques méthodes abstraites:
abstract class ControllerBase
{
public abstract bool EnableDTMFDetection(string CallID, Party Party);
public abstract bool DisableDTMFDetection(string CallID, Party Party);
}
Par la suite une classe (classes) qui dérivent de ControllerBase et mettre pleinement en œuvre ces méthodes:
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;
}
}
Jusqu'à présent tellement bon. Pour PlatformOne, je suis obligé de définir chacune de ces méthodes, en prescrivant comment je vais envoyer un message sortant à ma plateforme cible.
Ce sont les événements entrants qui m'ont eu. Je dois pouvoir élever des événements à l'intérieur de mes classes dérivées. Quand j'ajoute ce qui suit à controllerbase:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Il compile très bien, mais je ne peux pas soulever l'événement à l'intérieur de ma classe dérivée sans l'erreur: « L'événement « ControllerBase.MyEvent » ne peut apparaître sur la gauche côté de + = ou - = (sauf si utilisé du type 'ControllerBase') "
Donc, a) Comment puis-je élever mon événement de l'intérieur de ma classe dérivée, et b) quelqu'un peut-il suggérer un mécanisme pour l'application du câblage des événements spécifiés à partir de ma classe dérivée (fonctions abstraites ou méthodes d'interface). Thank vous appelez :)
Il semble que vous ayez besoin de lire comment déclencher des événements. De plus, si vous ajoutez le code associé à "MyEvent", cela peut vous aider à répondre à la question. – Nayan