/// <summary> /// Loads all modules. /// </summary> /// <returns>All modules</returns> public Dictionary <string, AbpModuleInfo> LoadModules() { Logger.Debug("Loading Abp modules..."); var modules = new Dictionary <string, AbpModuleInfo>(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) { if (!AbpModuleHelper.IsAbpModule(type)) { continue; } var moduleInfo = CreateModuleInfo(type); if (modules.ContainsKey(moduleInfo.Name)) { Logger.Warn("Module is loaded before: " + type.FullName); continue; } modules[moduleInfo.Name] = moduleInfo; Logger.Debug("Loaded module: " + moduleInfo); } } Logger.DebugFormat("{0} modules loaded.", modules.Count); return(modules); }
protected virtual void FillModules( List <AbpModuleDescriptor> modules, IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources) { var logger = services.GetInitLogger <AbpApplicationBase>(); //All modules starting from the startup module foreach (var moduleType in AbpModuleHelper.FindAllModuleTypes(startupModuleType, logger)) { modules.Add(CreateModuleDescriptor(services, moduleType)); } //Plugin modules foreach (var moduleType in plugInSources.GetAllModules(logger)) { if (modules.Any(m => m.Type == moduleType)) { continue; } modules.Add(CreateModuleDescriptor(services, moduleType, isLoadedAsPlugIn: true)); } }
public static Type[] GetModulesWithAllDependencies([NotNull] this IPlugInSource plugInSource, ILogger logger) { Check.NotNull(plugInSource, nameof(plugInSource)); return(plugInSource .GetModules() .SelectMany(type => AbpModuleHelper.FindAllModuleTypes(type, logger)) .Distinct() .ToArray()); }
protected virtual void SetDependencies(List <AbpModuleDescriptor> modules, AbpModuleDescriptor module) { foreach (var dependedModuleType in AbpModuleHelper.FindDependedModuleTypes(module.Type)) { var dependedModule = modules.FirstOrDefault(m => m.Type == dependedModuleType); if (dependedModule == null) { throw new AbpException("Could not find a depended module " + dependedModuleType.AssemblyQualifiedName + " for " + module.Type.AssemblyQualifiedName); } module.AddDependency(dependedModule); } }
private static AbpModuleInfo CreateModuleInfo(Type type) { if (!AbpModuleHelper.IsAbpModule(type)) { throw new AbpException( string.Format( "type {0} is not an Abp module. An Abp module must be subclass of AbpModule, must declare AbpModuleAttribute attribute and must not be abstract!", type.FullName)); } return(new AbpModuleInfo { Type = type, ModuleAttribute = ReflectionHelper.GetSingleAttribute <AbpModuleAttribute>(type), Instance = (IAbpModule)Activator.CreateInstance(type, new object[] {}) }); }