我有:
protected FileSystemWatcher watcher = new FileSystemWatcher();
public A()
{
...
watcher.Changed += OnChanged;
}
protected virtual void OnChanged(object source, FileSystemEventArgs e)
{
//do stuff
}
我需要在文件上发生更改以在派生类上调用函数时,我已经尝试过:
public B():A
{
watcher.Changed +=OnChangedDerived;
}
void OnChangedDerived(object source, FileSystemEventArgs e)
{
//do more stuff
}
但是它不会在派生类上调用该函数
答案 0 :(得分:1)
首先,B类中的代码不正确。
应该是:
watcher.Changed +=OnChangedDerived;
从OOP角度来看,还有一件事,您在基类中有一个虚拟方法。如果要自定义派生类中的事件处理,则可以在派生类中重写它。您无需再次订阅。
代码示例:
public class BaseClass
{
protected FileSystemWatcher watcher = new FileSystemWatcher();
public BaseClass()
{
...
watcher.Changed += OnChanged;
}
protected virtual void OnChanged(object source, FileSystemEventArgs e)
{
//do stuff
}
}
public class DerivedClass : BaseClass
{
protected override void OnChanged(object source, FileSystemEventArgs e)
{
//// your custom handling in the derived class.
}
}
希望这会有所帮助。