0

わかりましたので、状況はタイトルほど単純ではありません。これが取引です。

いくつかの引数が注入されることを期待するクラス ComplexClass があります。引数「A」はモジュール A に定義され、引数「B」はモジュール B に定義されています。一方、引数「C」はモジュール C1 とモジュール C2 に定義されています。

上記の 4 つのモジュールすべてで作成された単一のインジェクターがあります。申し訳ありませんが、単一のインジェクターでなければなりません。

ここで、ComplexClass の 2 つの異なるインスタンスを作成したいと思います。1 つはモジュール C1 からの 3 番目の引数を持ち、2 番目の引数はモジュール C2 からのものです。

ありがとう!

4

1 に答える 1

0

この問題は、一般に「ロボットの脚の問題」と呼ばれています。

参照: http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec

ここで Jesse Wilson の回答を参照してください: How do I bind Different Interfaces using Google Guice?

s ソリューションによると、PrivateModuleC1 および C2 のモジュールをPrivateModules 内にインストールするだけで、それぞれがComplexClass異なるバインディング アノテーションでバインドされます。

補助注入を使用して、2 つの場所のいずれかから発生する可能性のある依存関係を注入するなど、他の可能な解決策もあります。

于 2012-08-18T19:11:40.237 に答える