Вызвать функцию в производном классе при изменении файла - PullRequest
0 голосов
/ 11 марта 2019

у меня есть:

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 Ответ

1 голос
/ 11 марта 2019

Прежде всего код в классе B неверен.

должно быть:

 watcher.Changed +=OnChangedDerived;

Еще одна вещь с точки зрения ООП, у вас есть виртуальный метод в вашем базовом классе. Вы можете просто переопределить его в производном классе, если вы хотите настроить обработку событий в производном классе. Вам не нужно подписываться снова.

Пример кода:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...