public void FindsAssembliesInCandidates_Params()
        {
            var resolver = new AppDomainAssemblyCandidateFinder(AppDomain.CurrentDomain, Logger);
            var items    = resolver.GetCandidateAssemblies(
                new[] { "Rocket.Surgery.Conventions", "Rocket.Surgery.Conventions.Abstractions" }
                )
                           .Select(x => x.GetName().Name)
                           .ToArray();

            foreach (var item in items)
            {
                Logger.LogInformation(item);
            }

            items
            .Should()
            .Contain(
                new[]
            {
                "Sample.DependencyOne",
                //"Sample.DependencyTwo",
                "Sample.DependencyThree",
                "Rocket.Surgery.Conventions.Tests"
            }
                );
            items
            .Last()
            .Should()
            .Be("Rocket.Surgery.Conventions.Tests");
        }
Ejemplo n.º 2
0
        internal static RocketWasmHostBuilder GetOrCreateBuilder(IWebAssemblyHostBuilder builder, Assembly assembly = null)
        {
            if (!Builders.TryGetValue(builder, out var conventionalBuilder))
            {
                var diagnosticSource          = new DiagnosticListener("Rocket.Surgery.Blazor");
                var logger                    = new DiagnosticLogger(diagnosticSource);
                var serviceProviderDictionary = new ServiceProviderDictionary(builder.Properties);

                serviceProviderDictionary.Set <ILogger>(logger);
                serviceProviderDictionary.Set(HostType.Live);
                var assemblyCandidateFinder = new AppDomainAssemblyCandidateFinder(AppDomain.CurrentDomain, logger);
                var assemblyProvider        = new DefaultAssemblyProvider(AppDomain.CurrentDomain.GetAssemblies().Concat(GetAllAssemblies(assembly !)).ToArray());
        public void FindsAssembliesInCandidates_Empty()
        {
            var resolver = new AppDomainAssemblyCandidateFinder(AppDomain.CurrentDomain, Logger);
            var items    = resolver.GetCandidateAssemblies(Array.Empty <string>().AsEnumerable())
                           .Select(x => x.GetName().Name)
                           .ToArray();

            foreach (var item in items)
            {
                Logger.LogInformation(item);
            }

            items.Should().BeEmpty();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Fors the application domain.
        /// </summary>
        /// <param name="appDomain">The application domain.</param>
        /// <param name="diagnosticSource">The diagnostic source.</param>
        /// <returns>Func&lt;IHostBuilder, IRocketHostBuilder&gt;.</returns>
        public static Func <IHostBuilder, IRocketHostBuilder> ForAppDomain(
            AppDomain appDomain,
            DiagnosticSource diagnosticSource = null)
        {
            return(builder =>
            {
                var b = RocketHostExtensions.GetOrCreateBuilder(builder);
                if (diagnosticSource != null)
                {
                    b = b.With(diagnosticSource);
                }

                var logger = new DiagnosticLogger(b.DiagnosticSource);
                var assemblyCandidateFinder = new AppDomainAssemblyCandidateFinder(appDomain, logger);
                var assemblyProvider = new AppDomainAssemblyProvider(appDomain, logger);
                var scanner = new SimpleConventionScanner(assemblyCandidateFinder, b.ServiceProperties, logger);
                return RocketHostExtensions.Swap(b, b
                                                 .With(assemblyCandidateFinder)
                                                 .With(assemblyProvider)
                                                 .With(scanner)
                                                 );
            });
        }