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
Simulare Azure Cosmos DB in locale con Docker
Selettore CSS :has() e i suoi casi d'uso avanzati
Gestione CSS in Blazor con .NET 9
Introduzione alle Container Queries
Rendere le variabili read-only in una pipeline di Azure DevOps
Applicare un filtro per recuperare alcune issue di GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
.NET Conference Italia 2024
Utilizzare i variable font nel CSS
I più letti di oggi
- Parallelizzare le chiamate HTTP con async/await e le Promise in JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- a #RealCodeConf4 il 25 maggio a Firenze parleremo di #silverlight4. iscrizioni gratis su http://u.aspitalia.com/g9
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2
- Comporre la pagina HTML con i nuovi tag semantici di HTML5