Archivi Tag: dependency injection

Dependency Injection su Maui

La dependency Injection è una delle funzioni più comode per poter avere del codice facilmente modificabile ma se vogliamo usarla su Maui potremmo incorrere in qualche problema.

Ma andiamo con ordine, come siamo abituati a fare iniziare con il creare la nostra interfaccia con i metodi che ci interessano

public interface IApiAccess
{
    bool Test();
}

e andiamo poi a creare la relativa classe che andrà ad implementarla

public class ApiAccess : IApiAccess
{
    public bool Test()
    {
        return true;
    }
}

Il passo successivo sarà naturalmente quello di andare a registrare il nostro singleton nella classe mauiprogram.cs

mauiAppBuilder.Services.AddSingleton<IApiAccess, ApiAccess>();

A questo punto quello che vogliamo fare è andare ad utilizzare questa interfaccia nella nostra pagina quindi nel costruttore andremo ad aggiungerla come parametro

public MainPage(IApiAccess apiAccess)
{
    InitializeComponent();
}

se a questo punto andremo ad eseguire il nostro programma quello a cui ci troveremo davanti sarà un bell’errore in fase di esecuzione che ci indica che non è presente nessun costruttore senza parametri

Come risolvere il problema quindi? Per fortuna la soluzione è molto semplice, dobbiamo andare ad aggiungere una nuova riga sempre nel file mauiprogram.cs dove andiamo ad aggiungere come Transient la pagina che ci interessa

builder.Services.AddTransient(<MainPage>);

purtroppo dovremo andare ad aggiungere una riga per ogni pagina in cui vogliamo andare ad utilizzare la dependency injection direttamente nel costruttore ma in questo modo potremmo utilizzarla con ogni classe che vogliamo.

Spero questa soluzione possa essere interessante ed evitarvi qualche mal di testa 😀 e come sempre buon coding!!

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi