Maison >développement back-end >C++ >Comment puis-je résoudre les instances DI ASP.NET Core dans ConfigureServices ?
Dans ASP.NET Core MVC, le mécanisme d'injection de dépendances (DI) est utilisé pour gérer la création et le cycle de vie des dépendances d'application. La méthode ConfigureServices
est généralement utilisée pour enregistrer les dépendances, mais elle ne crée initialement qu'une collection IServiceCollection
qui sert de modèle pour le conteneur DI.
Pour résoudre manuellement l'instance de service, nous devons obtenir un IServiceProvider
qui contient le conteneur entièrement composé. Il existe plusieurs façons d'y parvenir :
L'injection de services dans le constructeur de la classe Startup
permet un accès direct aux services intégrés dans les méthodes ConfigureServices
, par exemple IConfiguration
:
<code class="language-csharp">public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { // 在此处使用 Configuration } }</code>
Dans la méthode Configure
, IApplicationBuilder
permet d'accéder directement à IServiceProvider
:
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>(); }</code>
Pour résoudre les dépendances directement dans ConfigureServices
vous devez faire appel à un prestataire intermédiaire :
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService, FooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
La résolution manuelle des dépendances (localisateurs de services) n'est généralement pas recommandée car elle peut réduire la maintenabilité et la testabilité. Préférez injecter des dépendances autant que possible.
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!