public static IServiceCollection AddConfigPlugins(this IServiceCollection container, Config config) { Assembly sourcePlugin = PluginFactory.LoadPlugin(config.Source); Type sourcePluginType = PluginFactory.GetPluginType <ISource>(sourcePlugin); container .AddPluginServices(sourcePlugin) .AddSingleton(typeof(ISource), sourcePluginType); IEnumerable <Assembly> generatorPlugins = config.Generators.Select(PluginFactory.LoadPlugin); foreach (Assembly generatorPlugin in generatorPlugins) { container .AddPluginServices(generatorPlugin) .AddSingleton(typeof(IGenerator), PluginFactory.GetPluginType <IGenerator>(generatorPlugin)); } return(container.AddSingleton(config)); }