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
Le novità di Angular: i miglioramenti alla CLI
Cache policy su route groups di Minimal API in ASP.NET Core 7
Gestire undefined e partial nelle reactive forms di Angular
Hosting di componenti WebAssembly in un'applicazione Blazor static
Copiare automaticamente le secret tra più repository di GitHub
Eseguire una GroupBy per entity in Entity Framework
Sfruttare lo streaming di una chiamata Http da Blazor
Utilizzare la libreria Benchmark.NET per misurare le performance
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Sottoscrizione agli eventi sul contenitore in JavaScript
Utilizzare database e servizi con gli add-on di Container App
Creare moduli CSS in React