文件更改时在派生类上调用函数

时间:2019-03-11 12:04:40

标签: c# inheritance filesystemwatcher

我有:

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
}

但是它不会在派生类上调用该函数

1 个答案:

答案 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.
       }
}

希望这会有所帮助。