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
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Migliorare la sicurezza dei prompt con Azure AI Studio
Utilizzare Locust con Azure Load Testing
Configurare e gestire sidecar container in Azure App Service
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Generare un hash con SHA-3 in .NET
Creare una libreria CSS universale: Clip-path
Scrivere selettori CSS più semplici ed efficienti con :is()
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Gestione dell'annidamento delle regole dei layer in CSS
Proteggere le risorse Azure con private link e private endpoints