私は一般的に Ninject と Dependency Injection を初めて使用するので、ここで私の初心者を許してください。=)
IConfig
インターフェイスを実装する型のアセンブリとその依存関係をスキャンするインターフェイスの実装がいくつかありIConfigOption
ます。各IConfig
実装は、異なるソースから値を取得します。
これらの実装は、スキャンを開始する場所からルート アセンブリをコンストラクターの引数として受け取ります。私は、これらの値を挿入するバインディングを考え出そうとしています。これまでのところ、次の行で何かを考えています。
Bind<IConfig>().To<Config>().WithConstructorArgument("rootAssembly", target);
私の問題は、クラスが注入されるtarget
アセンブリへの参照を取得する方法が見つからないように見えることです。Config
DI を使用しない場合は を使用Assembly.GetCallingAssembly()
しますが、このコンテキストでは、必要なターゲット アセンブリではなく、バインディングが存在するアセンブリが生成されます。
また、インジェクションを受け取るクラス/メンバーから目的の実装を指定する方法が必要です。たとえば、クライアント クラス A は をConfig
使用する実装者をRoleEnvironment
要求し、クライアント クラス B は をConfig
使用する実装者を要求しますConfigurationManager
。使用目的を明確にするための例を次に示します。
public class Client
{
[UseApplicationConfig]
public IHelper WithAppConfig { get; set; }
[UseRoleEnvironmentConfig]
public IHelper WithRoleEnvironmentConfig { get; set; }
}
public class Helper : IHelper
{
public Helper(IConfig config)
{
}
}
これを間違った角度から見ているか、明白なものを見逃しているように感じますが、何を探すべきかわかりません。どのように行うのが最善の方法でしょうか?
どうもありがとうございました。
編集:意図した使用例を追加し、明確にするために質問の一部を言い換えました。