Принудительная реализация событий в производных абстрактных классах

Я пытаюсь создать то, что я думаю, как класс перевода, чтобы моя программа могла взаимодействовать с множеством целевых платформ. Каждая платформа будет обрабатываться отдельной реализацией абстрактного класса. Я сократил количество вещей для простоты.

У меня есть абстрактный класс с парой абстрактных методов:

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') "

Итак, а) Как мне вызвать событие из моего производного класса, и б) может ли кто-нибудь предложить механизм для принудительного подключения указанные события из моего производного класса (а-ля абстрактные функции или методы интерфейса).Спасибо за звонок :)

6
задан Adrian Hand 4 October 2010 в 16:24
поделиться