Exemplo n.º 1
0
        private void CreateModules(ICollection <Type> moduleTypes, List <Type> plugInModuleTypes)
        {
            foreach (var moduleType in moduleTypes)
            {
                var moduleObject = _iocManager.Resolve(moduleType) as AbpModule;
                if (moduleObject == null)
                {
                    throw new AbpInitializationException("This type is not an ABP module: " + moduleType.AssemblyQualifiedName);
                }

                moduleObject.IocManager    = _iocManager;
                moduleObject.Configuration = _iocManager.Resolve <IAbpStartupConfiguration>();

                var moduleInfo = new AbpModuleInfo(moduleType, moduleObject, plugInModuleTypes.Contains(moduleType));

                _modules.Add(moduleInfo);

                if (moduleType == _modules.StartupModuleType)
                {
                    StartupModule = moduleInfo;
                }

                Logger.DebugFormat("Loaded module: " + moduleType.AssemblyQualifiedName);
            }
        }
Exemplo n.º 2
0
        public void LoadAll()
        {
            Logger.Debug("Loading Abp modules...");

            _modules.Add(AbpModuleInfo.CreateForType(typeof(AbpStartupModule)));

            var allAssemblies = AssemblyFinder.GetAllAssemblies();

            var scannedAssemlies = new List <Assembly>();

            foreach (var assembly in allAssemblies)
            {
                FillModules(assembly, scannedAssemlies);
            }

            SetDependencies();

            Logger.DebugFormat("{0} modules loaded.", _modules.Count);
        }
Exemplo n.º 3
0
        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 (!AbpModule.IsAbpModule(moduleType))
                {
                    throw new AbpInitializationException("This type is not an ABP module: " + moduleType.AssemblyQualifiedName);
                }

                if (!_iocManager.IsRegistered(moduleType))
                {
                    _iocManager.Register(moduleType);
                }
            }

            //Add to module collection
            foreach (var moduleType in moduleTypes)
            {
                var moduleObject = (AbpModule)_iocManager.Resolve(moduleType);

                moduleObject.IocManager    = _iocManager;
                moduleObject.Configuration = _iocManager.Resolve <IAbpStartupConfiguration>();

                _modules.Add(new AbpModuleInfo(moduleObject));

                Logger.DebugFormat("Loaded module: " + moduleType.AssemblyQualifiedName);
            }

            //AbpKernelModule must be the first module
            //var startupModuleIndex = _modules.FindIndex(m => m.Type == typeof(AbpKernelModule<TTenantId, TUserId>));
            //var startupModuleIndex = _modules.FindIndex(m => m.Type == typeof(AbpKernelModule<,>));
            var startupModuleIndex = _modules.FindIndex(m => m.Type == typeof(AbpKernelModule));

            if (startupModuleIndex > 0)
            {
                var startupModule = _modules[startupModuleIndex];
                _modules.RemoveAt(startupModuleIndex);
                _modules.Insert(0, startupModule);
            }

            SetDependencies();

            Logger.DebugFormat("{0} modules loaded.", _modules.Count);
        }
Exemplo n.º 4
0
        private void FillModules(Assembly assembly, List <Assembly> scannedAssemblies)
        {
            if (scannedAssemblies.Contains(assembly))
            {
                return;
            }

            scannedAssemblies.Add(assembly);
            var referencedAssemblyNames = assembly.GetReferencedAssemblies();

            foreach (var referencedAssemblyName in referencedAssemblyNames)
            {
                var referencedAssembly = Assembly.Load(referencedAssemblyName);
                FillModules(referencedAssembly, scannedAssemblies);
            }

            foreach (var type in assembly.GetTypes())
            {
                //Skip types those are not Abp Module
                if (!AbpModuleHelper.IsAbpModule(type))
                {
                    continue;
                }

                //Prevent multiple adding same module
                var moduleInfo = _modules.FirstOrDefault(m => m.Type == type);
                if (moduleInfo == null)
                {
                    moduleInfo = AbpModuleInfo.CreateForType(type);
                    _modules.Add(moduleInfo);
                }

                //Check for depended modules
                var dependedModuleTypes = moduleInfo.Instance.GetDependedModules();
                foreach (var dependedModuleType in dependedModuleTypes)
                {
                    FillModules(dependedModuleType.Assembly, scannedAssemblies);
                }

                Logger.Debug("Loaded module: " + moduleInfo);
            }
        }
        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 (!AbpModule.IsAbpModule(moduleType))
                {
                    throw new AbpInitializationException("This type is not an ABP module: " + moduleType.AssemblyQualifiedName);
                }

                if (!_iocManager.IsRegistered(moduleType))
                {
                    _iocManager.Register(moduleType);
                }
            }

            //Add to module collection
            foreach (var moduleType in moduleTypes)
            {
                var moduleObject = (AbpModule)_iocManager.Resolve(moduleType);

                moduleObject.IocManager    = _iocManager;
                moduleObject.Configuration = _iocManager.Resolve <IAbpStartupConfiguration>();

                _modules.Add(new AbpModuleInfo(moduleObject));

                Logger.DebugFormat("Loaded module: " + moduleType.AssemblyQualifiedName);
            }

            EnsureKernelModuleToBeFirst();

            SetDependencies();

            Logger.DebugFormat("{0} modules loaded.", _modules.Count);
        }