/// <summary> /// 记录<paramref name="module"/>的依赖 /// </summary> /// <param name="moduledescs"></param> /// <param name="module"></param> protected virtual void SetDependencies(List <XqModuleDescriptor> moduledescs, XqModuleDescriptor module) { foreach (var dependedModuleType in XqModuleHelper.FindDependedModuleTypes(module.Type)) { var dependedModule = moduledescs.FirstOrDefault(m => m.Type == dependedModuleType); if (dependedModule == null) { throw new XqException("Could not find a depended module " + dependedModuleType.AssemblyQualifiedName + " for " + module.Type.AssemblyQualifiedName); } module.AddDependency(dependedModule); } }
protected virtual void FillModules(List <XqModuleDescriptor> moduledescs, IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources) { ///从startupModule,获取所有Module foreach (var moduleType in XqModuleHelper.FindAllModuleTypes(startupModuleType)) { moduledescs.Add(CreateModuleDescriptor(services, moduleType)); } //Plugin modules foreach (var moduleType in plugInSources.GetAllModules()) { if (moduledescs.Any(m => m.Type == moduleType)) { continue; } moduledescs.Add(CreateModuleDescriptor(services, moduleType, isLoadedAsPlugIn: true)); } }