protected virtual void FillModules( List <ModuleDescriptor> modules, IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources) { //var logger = services.GetSingletonInstance<ILoggerFactory>().CreateLogger<ApplicationBase>(); ILogger logger = null; //All modules starting from the startup module foreach (var moduleType in ModuleHelper.FindAllModuleTypes(startupModuleType, logger)) { modules.Add(CreateModuleDescriptor(services, moduleType)); } //Plugin modules foreach (var moduleType in plugInSources.GetAllModules(logger)) { if (modules.Any(m => m.Type == moduleType)) { continue; } modules.Add(CreateModuleDescriptor(services, moduleType, isLoadedAsPlugIn: true)); } }
public static Type[] GetModulesWithAllDependencies([NotNull] this IPlugInSource plugInSource, ILogger logger) { Check.NotNull(plugInSource, nameof(plugInSource)); return(plugInSource .GetModules() .SelectMany(type => ModuleHelper.FindAllModuleTypes(type, logger)) .Distinct() .ToArray()); }