Я пытаюсь создать то, что я думаю, как класс перевода, чтобы моя программа могла взаимодействовать с множеством целевых платформ. Каждая платформа будет обрабатываться отдельной реализацией абстрактного класса. Я сократил количество вещей для простоты.
У меня есть абстрактный класс с парой абстрактных методов:
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') "
Итак, а) Как мне вызвать событие из моего производного класса, и б) может ли кто-нибудь предложить механизм для принудительного подключения указанные события из моего производного класса (а-ля абстрактные функции или методы интерфейса).Спасибо за звонок :)