我有:
protected FileSystemWatcher watcher = new FileSystemWatcher();
public A()
{
...
watcher.Changed += OnChanged;
}
protected virtual void OnChanged(object source, FileSystemEventArgs e)
{
//do stuff
}
我需要在派生类调用fonction的文件发生更改时,我尝试过:
public B():A
{
watcher.Changed +=OnChangedDerived;
}
void OnChangedDerived(object source, FileSystemEventArgs e)
{
//do more stuff
}
但它不会在派生类中调用该函数
首先,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.
}
}
希望这可以帮助。