Tweak DefaultHost
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
namespace Toolkit.Foundation;
|
||||||
|
|
||||||
|
public class ActionableInitialization(IServiceProvider provider,
|
||||||
|
Action<IServiceProvider> delegateAction) : IInitialization
|
||||||
|
{
|
||||||
|
public void Initialize() => delegateAction.Invoke(provider);
|
||||||
|
}
|
||||||
@@ -7,56 +7,64 @@ namespace Toolkit.Foundation;
|
|||||||
public class DefaultHostBuilder :
|
public class DefaultHostBuilder :
|
||||||
HostBuilder
|
HostBuilder
|
||||||
{
|
{
|
||||||
public static IHostBuilder Create()
|
public static IHostBuilder Create(Action<HostBuilder> builderDelegate)
|
||||||
{
|
{
|
||||||
return new HostBuilder()
|
HostBuilder hostBuilder = new();
|
||||||
.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<IComponentHostCollection,
|
hostBuilder.ConfigureServices((context, services) =>
|
||||||
ComponentHostCollection>();
|
{
|
||||||
|
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<IComponentHostCollection,
|
||||||
services.AddSingleton<IMessenger, StrongReferenceMessenger>(_ => StrongReferenceMessenger.Default);
|
ComponentHostCollection>();
|
||||||
|
|
||||||
|
services.AddSingleton<IDisposer, Disposer>();
|
||||||
|
services.AddSingleton<IMessenger, StrongReferenceMessenger>(_ => StrongReferenceMessenger.Default);
|
||||||
|
|
||||||
services.AddTransient<IValidation, Validation>();
|
services.AddTransient<IValidation, Validation>();
|
||||||
services.AddTransient<IValidatorCollection, ValidatorCollection>();
|
services.AddTransient<IValidatorCollection, ValidatorCollection>();
|
||||||
|
|
||||||
services.AddScoped<IProxyService<IMessenger>>(provider =>
|
services.AddScoped<IProxyService<IMessenger>>(provider =>
|
||||||
new ProxyService<IMessenger>(provider.GetRequiredService<IMessenger>()));
|
new ProxyService<IMessenger>(provider.GetRequiredService<IMessenger>()));
|
||||||
|
|
||||||
services.AddScoped<IProxyService<INavigationRegionProvider>>(provider =>
|
services.AddScoped<IProxyService<INavigationRegionProvider>>(provider =>
|
||||||
new ProxyService<INavigationRegionProvider>(provider.GetRequiredService<INavigationRegionProvider>()));
|
new ProxyService<INavigationRegionProvider>(provider.GetRequiredService<INavigationRegionProvider>()));
|
||||||
|
|
||||||
services.AddScoped<IProxyService<IComponentHostCollection>>(provider =>
|
services.AddScoped<IProxyService<IComponentHostCollection>>(provider =>
|
||||||
new ProxyService<IComponentHostCollection>(provider.GetRequiredService<IComponentHostCollection>()));
|
new ProxyService<IComponentHostCollection>(provider.GetRequiredService<IComponentHostCollection>()));
|
||||||
|
|
||||||
services.AddTransient<IContentFactory, ContentFactory>();
|
services.AddTransient<IContentFactory, ContentFactory>();
|
||||||
|
|
||||||
services.AddScoped<INavigationRegionCollection, NavigationRegionCollection>();
|
services.AddScoped<INavigationRegionCollection, NavigationRegionCollection>();
|
||||||
services.AddTransient<INavigationRegionProvider, NavigationRegionProvider>();
|
services.AddTransient<INavigationRegionProvider, NavigationRegionProvider>();
|
||||||
|
|
||||||
services.AddScoped<INavigation, Navigation>();
|
services.AddScoped<INavigation, Navigation>();
|
||||||
|
|
||||||
services.AddSingleton(new NamedComponent("Root"));
|
services.AddSingleton(new NamedComponent("Root"));
|
||||||
services.AddScoped<IComponentScopeCollection, ComponentScopeCollection>(provider =>
|
services.AddScoped<IComponentScopeCollection, ComponentScopeCollection>(provider =>
|
||||||
[
|
[
|
||||||
new ComponentScopeDescriptor("Root", provider.GetRequiredService<IServiceProvider>())
|
new ComponentScopeDescriptor("Root", provider.GetRequiredService<IServiceProvider>())
|
||||||
]);
|
]);
|
||||||
|
|
||||||
services.AddTransient<IComponentFactory, ComponentFactory>();
|
services.AddTransient<IComponentFactory, ComponentFactory>();
|
||||||
services.AddTransient<IComponentScopeProvider, ComponentScopeProvider>();
|
services.AddTransient<IComponentScopeProvider, ComponentScopeProvider>();
|
||||||
|
|
||||||
services.AddHandler<NavigateEventArgs, NavigateHandler>();
|
services.AddHandler<NavigateEventArgs, NavigateHandler>();
|
||||||
services.AddHandler<NavigateBackEventArgs, NavigateBackHandler>();
|
services.AddHandler<NavigateBackEventArgs, NavigateBackHandler>();
|
||||||
|
|
||||||
services.AddInitialization<ComponentInitializer>();
|
services.AddInitialization<ComponentInitializer>();
|
||||||
services.AddHostedService<AppService>();
|
});
|
||||||
});
|
|
||||||
|
builderDelegate.Invoke(hostBuilder);
|
||||||
|
|
||||||
|
hostBuilder.ConfigureServices((context, services) =>
|
||||||
|
{
|
||||||
|
services.AddHostedService<AppService>();
|
||||||
|
});
|
||||||
|
|
||||||
|
return hostBuilder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -155,6 +155,13 @@ public static class IServiceCollectionExtensions
|
|||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IServiceCollection AddInitialization(this IServiceCollection services,
|
||||||
|
Action<IServiceProvider> delegateAction)
|
||||||
|
{
|
||||||
|
services.AddTransient<IInitialization>(provider => new ActionableInitialization(provider, delegateAction));
|
||||||
|
return services;
|
||||||
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddAsyncPipelineBehavior(this IServiceCollection services,
|
public static IServiceCollection AddAsyncPipelineBehavior(this IServiceCollection services,
|
||||||
Type behaviorType,
|
Type behaviorType,
|
||||||
string? key = null)
|
string? key = null)
|
||||||
|
|||||||
-14
@@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toolkit.Windows", "Toolkit.
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Toolkit.WinUI", "Toolkit.WinUI\Toolkit.WinUI.csproj", "{D90BFF29-B38C-432E-849A-28C5A88A6DDD}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Toolkit.WinUI", "Toolkit.WinUI\Toolkit.WinUI.csproj", "{D90BFF29-B38C-432E-849A-28C5A88A6DDD}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Toolkit.Test", "Toolkit.Test\Toolkit.Test.csproj", "{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Toolkit.UI.WinUI", "Toolkit.UI.WinUI\Toolkit.UI.WinUI.csproj", "{13C89DC0-5B75-4368-930D-D156B06E3F6A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Toolkit.UI.WinUI", "Toolkit.UI.WinUI\Toolkit.UI.WinUI.csproj", "{13C89DC0-5B75-4368-930D-D156B06E3F6A}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
@@ -101,18 +99,6 @@ Global
|
|||||||
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x64.Build.0 = Release|Any CPU
|
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x86.ActiveCfg = Release|Any CPU
|
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x86.Build.0 = Release|Any CPU
|
{D90BFF29-B38C-432E-849A-28C5A88A6DDD}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{E125F8EF-6B66-400F-9CDE-BC3DB1463F4E}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{13C89DC0-5B75-4368-930D-D156B06E3F6A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
|||||||
Reference in New Issue
Block a user