私の要件は、ここで尋ねられた質問と非常によく似ています - With.Parameters.ConstructorArgument with ninject 2.0
これはばかげた質問かもしれません-しかし、呼び出し中にコンストラクターにパラメーターを送信するアプローチはGet<IMyType>
、の哲学に反しますデカップリング(DIの主な動機はこれだと思います)自体?これは、 のユーザーが の特定の実装のコンストラクターを知っている
ことを前提としています。
インターフェイス内でコンストラクターの引数を宣言する方法がないため、コンストラクターで異なるパラメーターのセットを取り、その実装にバインドする別の実装を将来追加できる可能性があります。繰り返しになりますが、デカップリングの哲学に従って、コードはIMyType
IMyType
Bind<IMyType>.To<ADifferentImpl>()
から実装オブジェクトを取得する、以前に作成された任意のモジュールで動作できるはずですGet<IMyType>
。
私は非常によく似た要件を持っています-バインディング時にコンストラクターパラメーターの値がわからないが、アクセス時のみです。与えられた状況で従うべき最善のアプローチは、Adrian Grigore の答えに従うことだと思いました。他のアプローチがあれば教えてください。