/// <summary> /// Fors the assemblies. /// </summary> /// <param name="assemblies">The assemblies.</param> /// <param name="diagnosticSource">The diagnostic source.</param> /// <returns>Func<IHostBuilder, IRocketHostBuilder>.</returns> public static Func <IHostBuilder, IRocketHostBuilder> ForAssemblies( IEnumerable <Assembly> assemblies, DiagnosticSource?diagnosticSource = null ) => builder => { var b = RocketHostExtensions.GetOrCreateBuilder(builder); if (diagnosticSource != null) { b = b.With(diagnosticSource); } var logger = new DiagnosticLogger(b.DiagnosticSource); var enumerable = assemblies as Assembly[] ?? assemblies.ToArray(); var assemblyCandidateFinder = new DefaultAssemblyCandidateFinder(enumerable, logger); var assemblyProvider = new DefaultAssemblyProvider(enumerable, logger); var scanner = new SimpleConventionScanner(assemblyCandidateFinder, b.ServiceProperties, logger); return(RocketHostExtensions.Swap( b, b .With(assemblyCandidateFinder) .With(assemblyProvider) .With(scanner) )); };