Wie man eine Instanz von IServiceProvider .NET-Core?
IServiceProvider
ist ein interface mit einer einzigen Methode:
object GetService(Type serviceType);
Es dient zum erstellen von Instanzen von Typen registriert .NET Core native DI-container.
Einer Instanz von IServiceProvider
selbst kann berechnet werden, indem eine BuildServiceProvider
Methode eines IServiceCollection
. IServiceCollection
ist ein parameter, der ConfigureServices
Methode in einer Startup
Klasse. Es scheint magisch aufgerufen, wobei eine Instanz von IServiceCollection
durch das framework.
Möchte ich erstellen Sie eine Instanz der IServiceProvider
ohne Setup
Methode überhaupt. Ich brauche es, um Abhängigkeiten aufzulösen in einem integration test Montage. Ist es möglich, um es überhaupt in diesem Szenario?
Du bist herzlich willkommen @RosdiKasim 🙂
InformationsquelleAutor Landeeyo | 2017-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die default-Implementierung von
IServiceCollection
von Microsoft:https://github.com/aspnet/DependencyInjection/blob/master/src/DI/ServiceCollection.cs
Blick auf den code, dann sollten Sie in der Lage sein, um eine
IServiceCollection
einfach anrufen:Hoffe, das hilft 🙂
InformationsquelleAutor
Als goaty erwähnt, ist es genug, um neue
ServiceCollection
. Hier die Beispiel-Klasse, die verwendet werden können, um Zugriff auf DI-container .NET Core:Startup
Klasse genommen und getestet Projekts, so dass die service-Eintragungen brauchen nicht wiederholt zu werden.Dann in der test-Klasse einfach benutzen:
Es scheint ein bisschen ärgerlich auf mich, dass ich zu Durchlaufen haben, einen IServiceProvider herum. Microsoft sollte zumindest einen static/singleton IServiceProvider.
InformationsquelleAutor Landeeyo