public HotSwap() { Directory.CreateDirectory(modDirectory); Logger.LogLine("Watching directory " + modDirectory + " for changes," + "press esc to exit"); IPluginWatcher <IHotSwapInvoke> watcher = new PluginWatcher <IHotSwapInvoke>(modDirectory); watcher.PluginsChanged += Watcher_PluginsChanged; lock (VersionLock) { try { current = Latest(watcher.CurrentlyAvailable); Logger.LogLine("\r\nInitial startup\r\nLatest version:"); Logger.LogLine(current.Version().ToString()); // Here we set some state that should be maintained between versions current.OnHotSwapInvoke(); } catch (Exception ex) { Logger.LogLine(ex.Message); } } }
static void Upgrade(IHotSwap old, IHotSwapInvoke latest) { lock (VersionLock) { try { latest.SetState(old.GetState()); current = latest; } catch (Exception ex) { Logger.LogLine("Can't upgrade: " + ex.Message); } } }