Comment faire pour obtenir une instance de IServiceProvider .NET de Base?
IServiceProvider
est une interface avec une seule méthode:
object GetService(Type serviceType);
Il est utilisé pour créer des instances de types de inscrit dans .NET Core natif DI conteneur.
Une instance de IServiceProvider
lui-même peut être obtenu en appelant un BuildServiceProvider
méthode d'un IServiceCollection
. IServiceCollection
est un paramètre de ConfigureServices
méthode dans un Startup
classe. Il semble être comme par magie appelée avec une instance de IServiceCollection
par le cadre.
Je veux créer une instance de IServiceProvider
sans avoir Setup
méthode à tous. J'en ai besoin pour résoudre les dépendances dans un test d'intégration de l'assemblée. Est-il possible de l'obtenir à tous dans ce scénario?
Vous êtes les bienvenus @RosdiKasim 🙂
OriginalL'auteur Landeeyo | 2017-02-14
Vous devez vous connecter pour publier un commentaire.
C'est le défaut de mise en œuvre de
IServiceCollection
de Microsoft:https://github.com/aspnet/DependencyInjection/blob/master/src/DI/ServiceCollection.cs
Regardant le code, alors vous devriez être en mesure d'obtenir un
IServiceCollection
simplement en appelant le:Espère que cela aide 🙂
OriginalL'auteur
Comme acidulée mentionné, c'est assez pour créer de nouveaux
ServiceCollection
. Ici l'exemple de la classe qui peut être utilisé pour accéder à conteneur d'injection de dépendances .NET de Base:Startup
classe est prise à partir testé projet afin que le service des inscriptions n'ont pas besoin d'être répété.Puis dans la classe de test suffit d'utiliser:
Il semble un peu ennuyeux pour moi que j'ai passer un IServiceProvider autour. Microsoft devrait avoir au moins fait une statique/singleton IServiceProvider.
OriginalL'auteur Landeeyo