/// <summary> /// Release module which implements the specified interface /// </summary> /// <typeparam name="T">Type of module to release</typeparam> public static void ReleaseModule <T>() where T : IMasterServerModule { IMasterServerModule pendingRelease = null; lock (repositoryLock) { // Can't modify the activeModules collection within foreach, so add all modules to be removed to a list foreach (KeyValuePair <string, ActiveModule> activeModule in activeModules) { if (activeModule.Value.Module.GetType().GetInterface(typeof(T).Name, true) != null) { pendingRelease = activeModule.Value.Module; } } if (pendingRelease != null) { ReleaseModuleByName(pendingRelease.GetType().Name); } } }
/// <summary> /// Release the specified module /// </summary> /// <param name="module">Module to release</param> public static void ReleaseModule(IMasterServerModule module) { ReleaseModuleByName(module.GetType().Name); }