Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        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));
            }
        }