Code Schnipsel: Service Provider

Dependency Injection macht das Leben einfacher auch in .NET MAUI. Hin und wieder ist es notwendig ein Service zu referenzieren das nicht über den Konstruktor kommt. Hier kommt ein Code Schnipsel für einen Service Provider:

public static class ServiceProvider
{
    public static TService GetService<TService>()
        => Current.GetService<TService>();

    public static IServiceProvider Current
        =>
#if WINDOWS10_0_17763_0_OR_GREATER
			MauiWinUIApplication.Current.Services;
#elif ANDROID
            MauiApplication.Current.Services;
#elif IOS || MACCATALYST
			MauiUIApplicationDelegate.Current.Services;
#else
			null;
#endif
}

Erläuterung:

Methode GetService():

Diese Methode ist eine Abkürzung, um einen Dienst vom Typ TService zu erhalten.
Sie delegiert den Aufruf an die Methode GetService() des aktuellen IServiceProviders.
Eigenschaft Current: Diese Eigenschaft gibt den aktuellen IServiceProvider auf der Basis der Plattform zurück.
Sie verwendet Präprozessor-Direktiven (#if, #elif, #else, #endif) zur bedingten Kompilierung unterschiedlichen Codes auf der Grundlage der Plattform.
Die plattformspezifische Eigenschaft Current wird auf der Grundlage der Kompilierungskonstanten ausgewählt:
Für Windows (UWP) mit Version 17763.0 oder höher wird MauiWinUIApplication.Current.Services verwendet.
Für Android wird MauiApplication.Current.Services verwendet.
Für iOS und Mac Catalyst verwendet es MauiUIApplicationDelegate.Current.Services.
Für andere Plattformen wird die Eigenschaft als Fallback auf null gesetzt.
Diese ServiceProvider-Klasse eine einfache und konsistente Möglichkeit bietet, Dienste in einer plattformübergreifenden MAUI-Anwendung abzurufen, wobei plattformspezifische Details, der Einfachheit halber, weggelassen werden. Das Code Schnipsel Service Provider verwendet die bedingte Kompilierung, um die Unterschiede bei der Abfrage von Diensten auf der Grundlage des zugrunde liegenden Betriebssystems zu behandeln.

Alle CodeSchnipsel für MAUI


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert




Enter Captcha Here :