/// <summary> /// 设置依赖 /// </summary> private void SetDependencies() { foreach (var moduleInfo in _modules) { //清理依赖项 moduleInfo.Dependencies.Clear(); foreach (var dependedModuleType in BaseModule.FindDependedModuleTypes(moduleInfo.Type)) { // var dependedModuleInfo = _modules.FirstOrDefault(m => m.Type == dependedModuleType); if (dependedModuleInfo == null) { throw new InitializationException("Could not find a depended module " + dependedModuleType.AssemblyQualifiedName + " for " + moduleInfo.Type.AssemblyQualifiedName); } if ((moduleInfo.Dependencies.FirstOrDefault(m => m.Type == dependedModuleType)) == null) { //添加依赖 moduleInfo.Dependencies.Add(dependedModuleInfo); } } } }
/// <summary> /// 创建一个新的ModuleInfo对象 /// </summary> public ModuleInfo([NotNull] Type type, [NotNull] BaseModule instance) { Check.NotNull(type, nameof(type)); Check.NotNull(instance, nameof(instance)); Type = type; Instance = instance; Assembly = Type.Assembly; Dependencies = new List <ModuleInfo>(); }
/// <summary> /// 查找所有模块 /// </summary> /// <returns></returns> private List <Type> FindAllModules() { var modules = BaseModule.FindDependedModuleTypesRecursivelyIncludingGivenModule(_modules.StartupModuleType); return(modules); }