/// <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))); }
public TestFixture(BlazorStateTestServer aBlazorStateTestServer) { BlazorStateTestServer = aBlazorStateTestServer; IWebAssemblyHostBuilder webAssemblyHostBuilder = BlazorWebAssemblyHost.CreateDefaultBuilder() //.UseBlazorStartup<Startup>() .ConfigureServices(ConfigureServices); ServiceProvider = webAssemblyHostBuilder.Build().Services; }
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 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); }
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))); }