Пример #1
0
        /// <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);
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Create a new ActiveModule object with the specified module
 /// </summary>
 /// <param name="module"></param>
 internal ActiveModule(IMasterServerModule module)
 {
     Module = module;
     Count  = 0;
 }
Пример #3
0
 /// <summary>
 /// Release the specified module
 /// </summary>
 /// <param name="module">Module to release</param>
 public static void ReleaseModule(IMasterServerModule module)
 {
     ReleaseModuleByName(module.GetType().Name);
 }