diff --git a/MvvmCross/Extensions/MvvmCrossInfrastructureExtensions.cs b/MvvmCross/Extensions/MvvmCrossInfrastructureExtensions.cs new file mode 100644 index 0000000000..61c9acd59e --- /dev/null +++ b/MvvmCross/Extensions/MvvmCrossInfrastructureExtensions.cs @@ -0,0 +1,27 @@ +using Microsoft.Extensions.DependencyInjection; +using MvvmCross.Commands; +using MvvmCross.Core; +using MvvmCross.Navigation; +using MvvmCross.ViewModels; + +namespace MvvmCross.Extensions; + +public static class MvvmCrossInfrastructureExtensions +{ + public static IServiceCollection AddCoreServices(this IServiceCollection services) + { + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + services.AddTransient(); + return services; + } +} diff --git a/MvvmCross/Hosting/MvxHostBuilder.cs b/MvvmCross/Hosting/MvxHostBuilder.cs index d8adaebf15..4e12ae5abe 100644 --- a/MvvmCross/Hosting/MvxHostBuilder.cs +++ b/MvvmCross/Hosting/MvxHostBuilder.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using MvvmCross.Extensions; namespace MvvmCross.Hosting; @@ -21,6 +22,7 @@ public class MvxHostBuilder : IMvxHostBuilder public virtual IMvxHost Build() { ConfigureDefaultNullLogging(Services); + AddMvvmCrossServices(Services); var serviceCollection = ConfigureContainer(Services); var loggerFactory = serviceCollection.GetRequiredService(); @@ -30,6 +32,11 @@ public virtual IMvxHost Build() return host; } + + protected virtual void AddMvvmCrossServices(IServiceCollection services) + { + services.AddCoreServices(); + } private static void ConfigureDefaultNullLogging(IServiceCollection services) {