示例#1
0
        /// <summary>
        /// Remove list of modules from user requirments. Order of modules is not important
        /// (it will be sort automaticaly with considering of dependencies)
        /// </summary>
        public void RemoveModules(string userId, IEnumerable <ModuleIdentity> modules)
        {
            var ordered = ModulesHelper.OrderModules(modules.Select(x => _modules.GetModule(x).ModuleInfo)).Reverse();

            foreach (var moduleInfo in ordered)
            {
                RemoveModule(userId, moduleInfo.ModuleIdentity);
            }
        }
示例#2
0
        /// <summary>
        /// Unregister list of modules.
        /// This method will try to unregister modules in right order.
        /// </summary>
        public virtual void UnregisterModules(IEnumerable <ModuleIdentity> moduleIdentities)
        {
            var identities     = moduleIdentities as ModuleIdentity[] ?? moduleIdentities.ToArray();
            var infos          = identities.Select(x => GetModule(x).ModuleInfo);
            var orderedModules = ModulesHelper.OrderModules(infos).Reverse();

            foreach (var m in orderedModules)
            {
                UnregisterModule(m.ModuleIdentity);
            }
        }
示例#3
0
        /// <summary>
        /// Register list of modules.
        /// This method will try to register modules in right order.
        /// </summary>
        public virtual void RegisterModules(IEnumerable <IModule> modules)
        {
            var enumerable       = modules as IModule[] ?? modules.ToArray();
            var identityToModule = enumerable.ToDictionary(x => x.ModuleInfo.ModuleIdentity, x => x); // Just for get IModule by ModuleIdentity
            var orderedModules   = ModulesHelper.OrderModules(enumerable.Select(x => x.ModuleInfo));

            foreach (var m in orderedModules)
            {
                RegisterModule(identityToModule[m.ModuleIdentity]);
            }
        }