Un petit arrière-plan: J'ai commencé à incorporer FluentValidation
dans une application AspnetCore où j'utilise SimpleInjector
comme DI de mon choix. Selon les réSEAU docsEst-ce mal d'enregistrer un conteneur tiers avec IServiceCollection dans AspnetCore
« La méthode ConfigureServices retourne généralement vide, mais si sa signature est modifiée pour revenir IServiceProvider, un autre conteneur peut être configuré et retourné »
Tout cela est bien un joli jusqu'à ce que j'ai réalisé que j'avais besoin de configurer les services qui n'étaient pas à moi, ce qui explique pourquoi l'exemple utilise containerBuilder.Populate(services);
j'imagine. La bonne chose à propos de FluentValidation
est que je peux créer mon propre IValidatorFactory
pour résoudre mes validateurs (d'où mon problème est venu parce que mes validateurs ont été enregistrés avec SimpleInjector, pas le conteneur par défaut qui pensait que je n'en avais pas). J'ai pensé que je pourrais contourner ce mal de tête en enregistrant container
de SimpleInjector avec le IServiceCollection
et l'injecter dans mon IValidatorFactory
en tant que IServiceProvider
au lieu de retourner le conteneur dans la méthode ConfigureServices
. On dirait que tout fonctionne comme un hack, mais est-ce le chemin à parcourir? Existe-t-il d'autres moyens que le wiki aspnet docs?
https://docs.asp.net/en/latest/fundamentals/dependency-injection.html
C'est décevant que vous adoptiez une position politique plutôt que technique sur la question. Vous avez toujours créé un logiciel opiniâtre, mais vous nous avez toujours donné les outils pour faire les choses populaires que vous n'approuvez pas. Cela semble s'écarter de cette façon de faire traditionnelle et franchement très décevante. –
merci. J'ai lu cet article l'autre jour quand j'ai introduit 'SimpleInjector' dans mon projet et créé des adaptateurs pour mon code si nécessaire. Je suppose que j'ai raté la 3ème partie! –
@ErikFunkenbusch Veuillez prendre le temps de vous informer en lisant les articles a référencés de près et les ressources qui sont liées à ces articles. Après cela, vous vous rendrez compte que ce n'est pas une position politique, mais en fait une position technique. Simple Injector ne peut pas se conformer pour des raisons techniques au monde du conteneur Comforming comme Microsoft le propose. – Steven