public static void Unload(string dll) { object obj; Monitor.Enter(obj = PluginReference.syncObject); try { IPluginDomainConnector domain = PluginFactory.Container.GetDomain(dll); foreach (KeyValuePair <string, IPluginConnector> current in domain.Plugins) { if (PluginReference.instances.ContainsKey(current.Key)) { PluginReference.instances.Remove(current.Key); } } PluginFactory.Container.Unload(dll); } finally { Monitor.Exit(obj); } }
public void AddDomain(string key, IPluginDomainConnector item) { object syncObject; Monitor.Enter(syncObject = PluginContainer._syncObject); try { if (!this.domainContainer.ContainsKey(key)) { this.domainContainer.Add(key, item); } foreach (KeyValuePair <string, IPluginConnector> current in item.Plugins) { if (!this.pluginContainer.ContainsKey(current.Key)) { this.pluginContainer.Add(current); } } } finally { Monitor.Exit(syncObject); } }