public void Watch() { ProjectWatcher = new ProjectFilesWatcher(this.BasePath); ProjectWatcher.Start(); ProjectWatcher.ModuleStream.Subscribe("Logger", msm => { //Console.WriteLine($"{msm}"); }); ProjectWatcher.ModuleStream.Subscribe("OnChange", MessageType.ModuleChanged, async msm => { var module = this.Modules.FirstOrDefault(m => m.Name == msm.ModuleName); if (module is null) { module = new FileModule(msm.FileFullPath, this.BasePath, this); Modules.Add(module); } module.Parse(); await module.SaveModuleOutput(false); }); //ProjectWatcher.ModuleStream.Subscribe("OnCreate", MessageType.ModuleCreated, msm => //{ // var module = Modules.FirstOrDefault(m => m.Name == msm.ModuleName); // if (module is null) // { // module = new Module(msm.FileFullPath, this.BasePath, this); // Modules.Add(module); // } //}); ProjectWatcher.ModuleStream.Subscribe("OnDelete", MessageType.ModuleDeleted, async msm => { var module = Modules.FirstOrDefault(m => m.Name == msm.ModuleName); if (!(module is null)) { Modules.Remove(module); await module.Clean(); } }); ProjectWatcher.ModuleStream.Subscribe("OnRename", MessageType.ModuleRenamed, async msm => { var moduleOld = Modules.FirstOrDefault(m => m.Name == msm.ModuleName); if (!(moduleOld is null)) { await moduleOld.Clean(); Modules.Remove(moduleOld); } var module = new FileModule(msm.FileFullPath, this.BasePath, this); Modules.Add(module); module.Parse(); await module.SaveModuleOutput(); }); }