private void LoadAll() { //Logger.Debug("Loading Abp modules..."); var moduleTypes = AddMissingDependedModules(_moduleFinder.FindAll()); //Logger.Debug("Found " + moduleTypes.Count + " ABP modules in total."); //Register to IOC container. foreach (var moduleType in moduleTypes) { if (!MabpModule.IsAbpModule(moduleType)) { throw new NullReferenceException("This type is not an Mabp module: " + moduleType.AssemblyQualifiedName); } if (!_iocManager.IsRegistered(moduleType)) { _iocManager.Register(moduleType); } } //Add to module collection foreach (var moduleType in moduleTypes) { var moduleObject = (MabpModule)_iocManager.Resolve(moduleType); moduleObject.IocManager = _iocManager; moduleObject.Configuration = _iocManager.Resolve <IStartupConfiguration>(); _modules.Add(new ModuleInfo(moduleObject)); //Logger.DebugFormat("Loaded module: " + moduleType.AssemblyQualifiedName); } //AbpKernelModule must be the first module var startupModuleIndex = _modules.FindIndex(m => m.Type == typeof(KernelModule)); if (startupModuleIndex > 0) { var startupModule = _modules[startupModuleIndex]; _modules.RemoveAt(startupModuleIndex); _modules.Insert(0, startupModule); } SetDependencies(); //Logger.DebugFormat("{0} modules loaded.", _modules.Count); }