コード例 #1
0
ファイル: RocketBooster.cs プロジェクト: rsg-bot/Conventions
        /// <summary>
        /// Fors the assemblies.
        /// </summary>
        /// <param name="assemblies">The assemblies.</param>
        /// <param name="diagnosticSource">The diagnostic source.</param>
        /// <returns>Func&lt;IHostBuilder, IRocketHostBuilder&gt;.</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)
                       ));
        };