我不知道是否对此有答案-我似乎找不到示例,因此也许我的术语不正确,或者也许不应该这样做,所以请原谅我。
我有一个带有一些事件和事件处理代码的对象的基类-基本上,这是使用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实际上需要处理事件,所以我要在基类中创建一个空的事件处理程序,并使用一个接口强制我的派生类重写基类,或者不是强制该派生类实现该处理程序? / p>
还是我要解决所有这些错误?
任何例子都值得赞赏..