/// <summary> /// 组织模块 /// </summary> /// <param name="moduleTypes"></param> /// <param name="descriptorBuilder"></param> protected virtual void OrganizationModule(IEnumerable <Type> moduleTypes, IModuleDescriptorBuilder descriptorBuilder) { try { var allModuleDescriptors = AppModuleDependencyUtil.FindAllDependedModuleDescriptors(moduleTypes, descriptorBuilder); SortedModuleDescriptors = SortModuleDescriptors(allModuleDescriptors).ToList().AsReadOnly(); SortedModuleTypes = SortedModuleDescriptors.Select(m => m.Type).ToList().AsReadOnly(); ModuleDependencyRoots = SortedModuleDescriptors.Where(m => m.Dependents.IsNullOrEmpty()).ToList().AsReadOnly(); } catch (ModularityException) { throw; } catch (Exception ex) { throw new ModularityException("SortModuleDescriptors Fail", ex); } }
/// <summary> /// 排序模块描述列表 /// </summary> /// <returns></returns> protected virtual IModuleDescriptor[] SortModuleDescriptors(IEnumerable <IModuleDescriptor> moduleDescriptors) { return(AppModuleDependencyUtil.SortModuleDescriptors(moduleDescriptors)); }