In ASP.NET Core MVC wird der Abhängigkeitsinjektionsmechanismus (DI) verwendet, um die Erstellung und den Lebenszyklus von Anwendungsabhängigkeiten zu verwalten. Die ConfigureServices
-Methode wird normalerweise zum Registrieren von Abhängigkeiten verwendet, erstellt jedoch zunächst nur eine IServiceCollection
-Sammlung, die als Blaupause für den DI-Container fungiert.
Um die Dienstinstanz manuell aufzulösen, müssen wir ein IServiceProvider
erhalten, das den vollständig zusammengesetzten Container enthält. Es gibt mehrere Möglichkeiten, dies zu erreichen:
Das Einfügen von Diensten in den Konstruktor der Startup
-Klasse ermöglicht den direkten Zugriff auf integrierte Dienste in ConfigureServices
-Methoden, z. B. 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>
bietet Configure
direkten Zugriff auf IApplicationBuilder
: IServiceProvider
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>(); }</code>
aufzulösen, müssen Sie einen Zwischendienstanbieter verwenden: ConfigureServices
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService, FooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich ASP.NET Core DI-Instanzen in ConfigureServices auflösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!