private List <IModuleDescriptor> GetDescriptors( IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources) { var modules = new List <ModuleDescriptor>(); //All modules starting from the startup module foreach (var moduleType in ModuleHelper.FindAllModuleTypes(startupModuleType)) { modules.Add(CreateModuleDescriptor(services, moduleType)); } //Plugin modules foreach (var moduleType in plugInSources.GetAllModules()) { if (modules.Any(m => m.Type == moduleType)) { continue; } modules.Add(CreateModuleDescriptor(services, moduleType)); } ModuleHelper.SetDependencies(modules); return(modules.Cast <IModuleDescriptor>().ToList()); }
public static Type[] GetModulesWithAllDependencies(this IPlugInSource plugInSource) { return(plugInSource .GetModules() .SelectMany(type => ModuleHelper.FindAllModuleTypes(type)) .Distinct() .ToArray()); }