public void SetDependencies(List <CoreModuleDescriptor> modules) { foreach (var dependedModuleType in CoreModuleHelper.FindDependedModuleTypes(ModuleType)) { var dependedModule = modules.FirstOrDefault(m => m.ModuleType == dependedModuleType); if (dependedModule == null) { throw new Exception("Could not find a depended module " + dependedModuleType.AssemblyQualifiedName + " for " + ModuleType.AssemblyQualifiedName); } _dependencies.Add(dependedModule); } }
private List <CoreModuleDescriptor> CreateCoreModuleDescriptors(IServiceCollection services, Type startupModuleType) { var coreModuleDescriptors = new List <CoreModuleDescriptor>(); var allModules = CoreModuleHelper.FindAllModuleTypes(startupModuleType); var serviceProvider = services.BuildServiceProvider(); foreach (var moduleType in allModules) { var instance = (ICoreModule)ActivatorUtilities.CreateInstance(serviceProvider, moduleType); coreModuleDescriptors.Add(new CoreModuleDescriptor(moduleType, instance)); } foreach (var coreModuleDescriptor in coreModuleDescriptors) { coreModuleDescriptor.SetDependencies(coreModuleDescriptors); } return(coreModuleDescriptors); }