Skip to content

Resolver allowing to share dependency injection between Maui and Blazor

Notifications You must be signed in to change notification settings

JeanCollas/MauiBlazorDependencyInjection

Repository files navigation

Presentation

This tool aims at simplifying the share of dependency injection between Maui and Blazor in a mixed environment

Nuget

DependencyInjectionMauiBlazor NuGet Status

Sample

MAUI Blazor sample

How to use ?

In MauiProgram class

using MauiBlazorDependencyInjection;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .RegisterBlazorMauiWebView()
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        builder.Services.AddBlazorWebView();
        builder.Services.AddSingleton<WeatherForecastService>();

        // Register any other service / ViewModel / Page here
        builder.Services.AddSingleton<TestSingletonService>();

        // Pre-build the app
        var app = builder.Build();
        // Intercept and register the ServiceProvider
        app.Services.UseResolver();
        // Return the app as usual
        return app;
    }
}

a. Use it as your factory from Maui side

Resolver.ServiceProvider.GetRequiredService<TestSingletonService>();
Console.WriteLine($"Instance number {TestSingletonService.Index}");

b. The services instances will be shared with your Blazor @inject services.

@inject TestSingletonService tester
Instance number @(tester.Index).

About

Resolver allowing to share dependency injection between Maui and Blazor

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published