public PlusModuleInfo(Type type, PlusModule instance) { Type = type; Instance = instance; Assembly = Type.GetTypeInfo().Assembly; Dependencies = new List <PlusModuleInfo>(); }
private void SetDependencies() { foreach (PlusModuleInfo module in _modules) { module.Dependencies.Clear(); foreach (Type dependedModuleType in PlusModule.FindDependedModuleTypes(module.Type)) { PlusModuleInfo PlusModuleInfo = _modules.FirstOrDefault((PlusModuleInfo m) => m.Type == dependedModuleType); if (PlusModuleInfo == null) { throw new PlusInitializationException("无法找到依赖的模块 " + dependedModuleType.AssemblyQualifiedName + " for " + module.Type.AssemblyQualifiedName); } if (module.Dependencies.FirstOrDefault((PlusModuleInfo dm) => dm.Type == dependedModuleType) == null) { module.Dependencies.Add(PlusModuleInfo); } } } }
private List <Type> FindAllModuleTypes() { return(PlusModule.FindDependedModuleTypesRecursivelyIncludingGivenModule(_modules.StartupModuleType)); }