La Dependency Injection è una pratica fondamentale nel panorama moderno, e con Blazor essa è ben strutturata all'interno della classe Program.cs.
public static async Task Main(string[] args) { ... builder.Services.AddScoped.AddScoped<IMyService,MyService>(); ... }
Impostata la regola di creazione possiamo recuperare un istanza del servizio utilizzando la keyword Inject
@inject IMyService Service
Le cose si complicano però quando vogliamo creare una classe base per i nostri componenti, in cui iniettare la dipendenza tramite costruttore:
public class BaseCustomComponent: ComponentBase { IMyService _service; public BaseCustomComponent(IMyService service){ _service = service; } }
Infatti un oggetto di questo tipo non è utilizzabile direttamente come classe base a causa dei parametri nel costruttore:
@* Errore, la classe base non prevede un costruttore senza parametri *@ @inherits BaseCustomComponent
Per evitarlo è necessario utilizzare l'attributo [Inject], in questo modo sarà il runtime a gestire automaticamente la risoluzione delle dipendenze
public class BaseCustomComponent : ComponentBase { [Inject] public IMyService Service { get; set; } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
.NET per sviluppatori AWS
Avviare e arrestare programmaticamente un Hosted Service di ASP.NET Core
Esecuzione a matrici nei workflow di GitHub Action
Usare l'option pattern per gestire la configurazione in ASP.NET Core
Iniettare servizi in un hosted service di ASP.NET Core
Chiamare un endpoint ASP.NET Core protetto da Certificate Authentication
Forzare la lingua dell'interfaccia di Azure Active Directory B2C
Filtrare le chiamate HTTP ad un App Service in base al servizio Azure
Aggiungere temi custom a Blazor
Configuration strongly typed anche per singleton con IOptionsMonitor in ASP.NET Core
Bypassare l'esecuzione di una GitHub Action su branch protetti
Le novità di Blazor in .NET 6.0
I più letti di oggi
- Track 1: @morwalpiz con #blazor #pwa e offline-firstTrack 2: @amelchiori con #githubactions e #terraform: l'infrastruttura, dalla definizione al deploy Seguici live su #aspilive: https://aspit.co/devconf-22
- Installazione di una PWA Blazor
- .NET Conference Italia 2021 - Online
- Sviluppare applicazioni per Windows Phone