Вкратце
вам нужно будет сделать что-то вроде этого:
Напишите ваш класс Watcher, который реализует интерфейс IWatcher:
public class Watcher : IWatcher
{
private readonly string _path;
private readonly bool _deletionPolicy;
public Watcher(string path, bool deletionPolicy = false)
{
_path = path;
_deletionPolicy = deletionPolicy;
}
}
затем в методе ConfigureServices в Startup.cs зарегистрируйте IWatcher в классе Watcher следующим образом:
services.AddTransient<IWatcher>(w => new Watcher("some path", deletionPolicy));
Наконец, в каждом контроллере, где вам нужен класс Watcher, используйте интерфейс IWatcher в конструкторе.
Когда вы добавляете IWatcher в конструктор контроллера, внедрение зависимости будет создавать экземпляр Watcher, как вы его определили в методе ConfigureServices.
После этого он вставит его в конструктор и присвоит его закрытой переменной.
Затем вы можете использовать его в контроллере методами, где это необходимо.
public class SomeController : Controller
{
private readonly IWatcher _watcher;
public SomeController(IWatcher watcher)
{
_watcher = watcher;
}
}