Tweak DefaultHost
This commit is contained in:
@@ -7,56 +7,64 @@ namespace Toolkit.Foundation;
|
||||
public class DefaultHostBuilder :
|
||||
HostBuilder
|
||||
{
|
||||
public static IHostBuilder Create()
|
||||
public static IHostBuilder Create(Action<HostBuilder> builderDelegate)
|
||||
{
|
||||
return new HostBuilder()
|
||||
.ConfigureServices((context, services) =>
|
||||
{
|
||||
services.AddScoped<IServiceFactory>(provider =>
|
||||
new ServiceFactory((type, parameters) =>
|
||||
ActivatorUtilities.CreateInstance(provider, type,
|
||||
parameters?.Where(x => x is not null).ToArray()!)));
|
||||
HostBuilder hostBuilder = new();
|
||||
|
||||
services.AddSingleton<IComponentHostCollection,
|
||||
ComponentHostCollection>();
|
||||
hostBuilder.ConfigureServices((context, services) =>
|
||||
{
|
||||
services.AddScoped<IServiceFactory>(provider =>
|
||||
new ServiceFactory((type, parameters) =>
|
||||
ActivatorUtilities.CreateInstance(provider, type,
|
||||
parameters?.Where(x => x is not null).ToArray()!)));
|
||||
|
||||
services.AddSingleton<IDisposer, Disposer>();
|
||||
services.AddSingleton<IMessenger, StrongReferenceMessenger>(_ => StrongReferenceMessenger.Default);
|
||||
services.AddSingleton<IComponentHostCollection,
|
||||
ComponentHostCollection>();
|
||||
|
||||
services.AddSingleton<IDisposer, Disposer>();
|
||||
services.AddSingleton<IMessenger, StrongReferenceMessenger>(_ => StrongReferenceMessenger.Default);
|
||||
|
||||
services.AddTransient<IValidation, Validation>();
|
||||
services.AddTransient<IValidatorCollection, ValidatorCollection>();
|
||||
services.AddTransient<IValidation, Validation>();
|
||||
services.AddTransient<IValidatorCollection, ValidatorCollection>();
|
||||
|
||||
services.AddScoped<IProxyService<IMessenger>>(provider =>
|
||||
new ProxyService<IMessenger>(provider.GetRequiredService<IMessenger>()));
|
||||
services.AddScoped<IProxyService<IMessenger>>(provider =>
|
||||
new ProxyService<IMessenger>(provider.GetRequiredService<IMessenger>()));
|
||||
|
||||
services.AddScoped<IProxyService<INavigationRegionProvider>>(provider =>
|
||||
new ProxyService<INavigationRegionProvider>(provider.GetRequiredService<INavigationRegionProvider>()));
|
||||
services.AddScoped<IProxyService<INavigationRegionProvider>>(provider =>
|
||||
new ProxyService<INavigationRegionProvider>(provider.GetRequiredService<INavigationRegionProvider>()));
|
||||
|
||||
services.AddScoped<IProxyService<IComponentHostCollection>>(provider =>
|
||||
new ProxyService<IComponentHostCollection>(provider.GetRequiredService<IComponentHostCollection>()));
|
||||
services.AddScoped<IProxyService<IComponentHostCollection>>(provider =>
|
||||
new ProxyService<IComponentHostCollection>(provider.GetRequiredService<IComponentHostCollection>()));
|
||||
|
||||
services.AddTransient<IContentFactory, ContentFactory>();
|
||||
services.AddTransient<IContentFactory, ContentFactory>();
|
||||
|
||||
services.AddScoped<INavigationRegionCollection, NavigationRegionCollection>();
|
||||
services.AddTransient<INavigationRegionProvider, NavigationRegionProvider>();
|
||||
services.AddScoped<INavigationRegionCollection, NavigationRegionCollection>();
|
||||
services.AddTransient<INavigationRegionProvider, NavigationRegionProvider>();
|
||||
|
||||
services.AddScoped<INavigation, Navigation>();
|
||||
services.AddScoped<INavigation, Navigation>();
|
||||
|
||||
services.AddSingleton(new NamedComponent("Root"));
|
||||
services.AddScoped<IComponentScopeCollection, ComponentScopeCollection>(provider =>
|
||||
[
|
||||
new ComponentScopeDescriptor("Root", provider.GetRequiredService<IServiceProvider>())
|
||||
]);
|
||||
services.AddSingleton(new NamedComponent("Root"));
|
||||
services.AddScoped<IComponentScopeCollection, ComponentScopeCollection>(provider =>
|
||||
[
|
||||
new ComponentScopeDescriptor("Root", provider.GetRequiredService<IServiceProvider>())
|
||||
]);
|
||||
|
||||
services.AddTransient<IComponentFactory, ComponentFactory>();
|
||||
services.AddTransient<IComponentScopeProvider, ComponentScopeProvider>();
|
||||
services.AddTransient<IComponentFactory, ComponentFactory>();
|
||||
services.AddTransient<IComponentScopeProvider, ComponentScopeProvider>();
|
||||
|
||||
services.AddHandler<NavigateEventArgs, NavigateHandler>();
|
||||
services.AddHandler<NavigateBackEventArgs, NavigateBackHandler>();
|
||||
services.AddHandler<NavigateEventArgs, NavigateHandler>();
|
||||
services.AddHandler<NavigateBackEventArgs, NavigateBackHandler>();
|
||||
|
||||
services.AddInitialization<ComponentInitializer>();
|
||||
services.AddHostedService<AppService>();
|
||||
});
|
||||
services.AddInitialization<ComponentInitializer>();
|
||||
});
|
||||
|
||||
builderDelegate.Invoke(hostBuilder);
|
||||
|
||||
hostBuilder.ConfigureServices((context, services) =>
|
||||
{
|
||||
services.AddHostedService<AppService>();
|
||||
});
|
||||
|
||||
return hostBuilder;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user