Résolvez manuellement le service ASP.NET Core dans ConfigureServices
La méthode ConfigureServices
utilisée pour configurer le conteneur d'injection de dépendances dans ASP.NET Core ne fournit pas de méthode directe pour résoudre les services. Pour résoudre manuellement les services à partir de cette méthode, une approche alternative est requise.
Modèle de fournisseur de services
Pour résoudre les services, ASP.NET Core utilise le modèle de fournisseur de services. Une fois la collection de services construite, elle est convertie en une instance IServiceProvider
, permettant de résoudre les services.
Prestataire de services d'injection
Une façon de résoudre un service consiste à injecter une instance IServiceProvider
dans le constructeur de la classe Startup
. Cependant, cette méthode ne donne accès qu’à des services nécessaires limités injectés par la couche d’hébergement.
Utilisation d'ApplicationServices
Dans la méthode Configure
, IApplicationBuilder
fournit l'attribut ApplicationServices
, qui contient un fournisseur de services ayant accès à tous les services enregistrés.
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var fooService = serviceProvider.GetService<IFooService>(); }</code>
Créer un prestataire de services intermédiaire
Pour résoudre les services dans la méthode ConfigureServices
, un fournisseur de services intermédiaire peut être construit à partir d'une collection de services partiellement construite. Toutefois, cela n'inclut que les services enregistrés avant cette heure.
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService, FooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
Éviter l'analyse manuelle
La résolution manuelle des services n'est généralement pas recommandée car elle viole les principes d'injection de dépendances. Utilisez plutôt l’injection ou tirez parti de l’injection du fournisseur de services dans la méthode Configure
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!