Я не знаю, есть ли ответ на этот вопрос - я не могу найти примеры, поэтому, возможно, моя терминология неверна, или, возможно, этого не следует делать, так что извините за вопрос.
У меня есть базовый класс с объектом, который имеет несколько событий и код обработки событий - в основном это процесс с использованием 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 должен фактически обрабатывать событиятак я могу создать пустой обработчик событий в базовом классе и использовать интерфейс, чтобы заставить мой производный класс переопределить базовый или вместо того, чтобы заставить производный класс реализовать обработчик ??
Или я собираюсьэто все неправильно?
Любые примеры приветствуются ..