Я пытаюсь создать то, что я думаю о качестве класса трансляции, чтобы моя программа могла разговаривать с различными целевыми платформами. Каждая платформа будет обрабатываться отдельной реализацией абстрактного класса. Я упростил это ради простоты.Выполнение реализации событий в производных абстрактных классах
У меня есть абстрактный класс, с парой абстрактных методов:
abstract class ControllerBase
{
public abstract bool EnableDTMFDetection(string CallID, Party Party);
public abstract bool DisableDTMFDetection(string CallID, Party Party);
}
Впоследствии класс (классы), которые вытекают из ControllerBase, и полностью реализовать эти методы:
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;
}
}
До сих пор так хорошо. Для PlatformOne я вынужден определить каждый из этих методов, предписывая, как я отправлю исходящее сообщение на свою целевую платформу.
Это входящие события, которые меня достали. Мне нужно уметь поднимать события из моих производных классов. Когда я добавляю следующее controllerbase:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Это компилируется нормально, но я не могу поднять событие из моего производного класса без ошибки: «Событие„ControllerBase.MyEvent“может появиться только на левом с правой стороны + = или - = (кроме случаев, когда они используются внутри типа «ControllerBase») «
Итак, a) Как поднять мое событие из моего производного класса и b) может ли кто-нибудь предложить механизм для принудительное подключение определенных событий из моего производного класса (a la абстрактные функции или методы интерфейса). Спасибо назвать :)
Похоже, вам нужно прочитать, как поднять события. Кроме того, если вы добавите код, относящийся к «MyEvent», который может помочь в ответе на вопрос. – Nayan