2016-07-13 5 views
0

少し背景:AspnetCoreアプリケーションにFluentValidationを組み込みました。ここではSimpleInjectorを選択DIとして使用しました。 「ConfigureServices方法は、典型的には、空隙を返し、その 署名はIServiceProviderを返すように変更された場合、異なる容器 構成することができ、返さ」AspnetCoreにIServiceCollectionのサードパーティコンテナを登録するのは間違っていますか?

をASPNETドキュメント

によれば、これは全て順調です私が実現しないサービスを構成する必要があることがわかるまではいいです。だからこそ、この例ではを使っています。 FluentValidationについての素敵な点は私のバリデーター(私のバリデーターはSimpleInjectorに登録されているので、私の問題がどこから来たのかはわかりませんでした)を解決するために自分でIValidatorFactoryを作成することができます。 SimpleInjectorのcontainerIServiceCollectionに登録してにIServiceProviderと入力してConfigureServicesメソッドのコンテナを返す代わりに、この頭痛を乗り越えることができました。それがすべてハックとして機能するように見えますが、これは行く方法ですか? aspnet docs wiki以外の方法はありますか?

参照https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation.AspNetCore/ServiceProviderValidatorFactory.cs

https://docs.asp.net/en/latest/fundamentals/dependency-injection.html

答えて

0

その抽象化したシンプルなインジェクタとASP.NETコアDIの抽象化(解決できないすなわち非互換性)と、多くのproblems in generalの間には根本的な非互換性があります。 Microsoftは提案しました。 .NETのコアDIの抽象化のための自己開発またはサードパーティ提供のアダプタを使用してから

リフレイン:このためour official advice

はにあります。フレームワークコンポーネントと第三者コンポーネントからアプリケーションコンポーネントの登録を分離します。ソリッドな作業方法を追求し、フレームワークやサードパーティのコンポーネントとの非互換性を気にすることなく、Simple Injectorでアプリケーションの登録を検証し診断することができます。

詳細については、hereを参照してください。サードパーティのコンテナを使用する場合は、ASP.NET Coreをどのように使用すればよいですか。

+0

これは、技術的な問題ではなく、政治的な立場を取っていることは残念です。あなたは常に懐疑的なソフトウェアを作成しましたが、あなたが承認していない人気のあることを行うためのツールも私たちに与えてきました。これは伝統的なやり方から出発しているようですが、率直に言って非常に残念です。ありがとうございます。 –

+0

私は私のプロジェクトに 'SimpleInjector'を持ってきて、必要に応じて自分のコードのためのアダプタを作成した昨日、その記事を読んでいました。私はサードパーティの部分を逃したと思います! –

+0

@ErikFunkenbuschご参考までに、参考にした記事やそれらの記事からリンクされているリソースを読んで、自分自身に知らせる時間を取ってください。その後、あなたはこれが政治的スタンスではなく、実際には技術的スタンスであることに気付くでしょう。 Simple Injectorは、Microsoftが提案しているコンパクトコンテナの世界に技術的な理由で準拠することはできません。 – Steven

関連する問題