//public public void LoadMod(string name, string path) { if (name == null) { throw new ArgumentNullException("name"); } if (path == null) { throw new ArgumentNullException("path"); } if (!FileUtil.PathExists(path)) { throw new Exception("path does not exist."); } if (!FileUtil.PathIsFile(path)) { throw new Exception("path is not a file."); } AppDomain domain = AppDomain.CreateDomain(name); ServiceLocator.GetService <IExceptionHandler>().AddDomain(domain); Type t = typeof(ModBase); ModBase mod = null; try { mod = (ModBase)domain.CreateInstanceFromAndUnwrap(path, t.Name); } catch (Exception ex) { throw new Exception("Cannot create instance of mod.", ex); } if (mod == null) { throw new Exception("Cannot create instance of mod."); } mod.Load(); if (mods.ContainsKey(name)) { mods[name].Dispose(); mods[name] = new ModContainer(domain, mod); } else { mods.TryAdd(name, new ModContainer(domain, mod)); } }