/// <summary>
        /// Configures the <see cref="IWebAssemblyHostBuilder"/> to use the provided startup class.
        /// </summary>
        /// <typeparam name="TStartup">A type that configures a Blazor application.</typeparam>
        /// <param name="builder">The <see cref="IWebAssemblyHostBuilder"/>.</param>
        /// <returns>The <see cref="IWebAssemblyHostBuilder"/>.</returns>
        public static IWebAssemblyHostBuilder UseBlazorStartup <TStartup>(this IWebAssemblyHostBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(UseBlazorStartup(builder, typeof(TStartup)));
        }
Exemplo n.º 2
0
        public TestFixture(BlazorStateTestServer aBlazorStateTestServer)
        {
            BlazorStateTestServer = aBlazorStateTestServer;
            IWebAssemblyHostBuilder webAssemblyHostBuilder =
                BlazorWebAssemblyHost.CreateDefaultBuilder()
                //.UseBlazorStartup<Startup>()
                .ConfigureServices(ConfigureServices);

            ServiceProvider = webAssemblyHostBuilder.Build().Services;
        }
Exemplo n.º 3
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());
Exemplo n.º 4
0
        public static IWebAssemblyHostBuilder ConfigureRocketSurgery(
            [NotNull] this IWebAssemblyHostBuilder builder,
            Assembly assembly,
            [NotNull] Action <IRocketWasmHostBuilder> action
            )
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            action(GetOrCreateBuilder(builder, assembly));
            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="IWebAssemblyHostBuilder"/> to use the provided startup class.
        /// </summary>
        /// <param name="builder">The <see cref="IWebAssemblyHostBuilder"/>.</param>
        /// <param name="startupType">A type that configures a Blazor application.</param>
        /// <returns>The <see cref="IWebAssemblyHostBuilder"/>.</returns>
        public static IWebAssemblyHostBuilder UseBlazorStartup(this IWebAssemblyHostBuilder builder, Type startupType)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (builder.Properties.ContainsKey(BlazorStartupKey))
            {
                throw new InvalidOperationException("A startup class has already been registered.");
            }

            // It would complicate the implementation to allow multiple startup classes, and we don't
            // really have a need for it.
            builder.Properties.Add(BlazorStartupKey, bool.TrueString);

            var startup = new ConventionBasedStartup(Activator.CreateInstance(startupType));

            builder.ConfigureServices(startup.ConfigureServices);
            builder.ConfigureServices(s => s.AddSingleton <IBlazorStartup>(startup));

            return(builder);
        }
Exemplo n.º 6
0
 public TestFixture(TestServer aBlazorStateTestServer)
 {
     BlazorStateTestServer  = aBlazorStateTestServer;
     WebAssemblyHostBuilder = BlazorWebAssemblyHost.CreateDefaultBuilder()
                              .ConfigureServices(ConfigureServices);
 }
 /// <summary>
 /// Adds services to the container. This can be called multiple times and the results will be additive.
 /// </summary>
 /// <param name="hostBuilder">The <see cref="IWebAssemblyHostBuilder" /> to configure.</param>
 /// <param name="configureDelegate"></param>
 /// <returns>The same instance of the <see cref="IWebAssemblyHostBuilder"/> for chaining.</returns>
 public static IWebAssemblyHostBuilder ConfigureServices(this IWebAssemblyHostBuilder hostBuilder, Action <IServiceCollection> configureDelegate)
 {
     return(hostBuilder.ConfigureServices((context, collection) => configureDelegate(collection)));
 }