Наследование событий базового класса - PullRequest
0 голосов
/ 28 сентября 2018

Я не знаю, есть ли ответ на этот вопрос - я не могу найти примеры, поэтому, возможно, моя терминология неверна, или, возможно, этого не следует делать, так что извините за вопрос.

У меня есть базовый класс с объектом, который имеет несколько событий и код обработки событий - в основном это процесс с использованием FileSystemWatcher.

В моей базе у меня весь код подключендля обработки определенных событий и обработки ошибок.

Проблема в том, что я ищу возможность контролировать, на какие события наблюдателя файловой системы должен подписаться базовый класс (думал включить все и использовать регистр переключателя для их добавления), но тогда мне нужнообрабатывать их в производном классе, а не в базе - потому что есть определенные функциональные возможности производных классов, которые я хочу.Я не хочу реализовывать все события в базе, если это возможно - потому что я не хочу накладных расходов, когда работают от 4 до 8 из этих производных классов.Одна вещь, которую я хотел бы, это заставить производный класс ПОДПИСАТЬСЯ на событие.

Я знаю из DCcoder, что абстрактный был ключом к тому, чтобы заставить методы быть «наследуемыми», но я затрудняюсь с форсированием подписки.

    public abstract class myBase
    {

        public event EventHandler<string> MessageAvailable;

        protected void OnMessageAvailable(string e)
        {
             MessageAvailable?.Invoke(this, e);

        }


       public event EventHandler<Exception> Error;

        protected virtual void OnError(Exception e)
        {
            Error?.Invoke(this, e);
        }

    }


public myderivedclass : myBase
{

      this.Message += IfYouwantTo;
      this.Error += REQUIRE_THIS_SUBSCRIPTION_HandleErrorHere;

}

DerivedClass должен фактически обрабатывать событиятак я могу создать пустой обработчик событий в базовом классе и использовать интерфейс, чтобы заставить мой производный класс переопределить базовый или вместо того, чтобы заставить производный класс реализовать обработчик ??

Или я собираюсьэто все неправильно?

Любые примеры приветствуются ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...