次のバインディングを宣言しています
Bind<IDataSource>().To<DataSourceOne>();
Bind<ISettings>().To<DataSourceSettings>
.WhenInjectedInto<DataSourceOne>();
Bind<ISettings>().To<Settings>();
今私は電話する
Kernel.Get<IDataSourc>();
Ninject は DataSourceSettings を正しく挿入しますが、設定ファイルのデータに基づいてコンストラクター引数を Settings および DataSourceSettings に渡す必要があります。そのため、次のように IDataSouce バインディングを変更しました
Kernel.Bind<IDataSource>().To<DataSourceOne>()
.WithConstructorArgument("settings", Kernel.Get<ISettings>(
new ConstructorArgument("data", objectContainingConfigFileData)
)
);
その場合、Ninject は DataSourceSettings クラスの代わりに Settings クラスを注入します。問題は、ISettings が DataSourceSettings クラスに挿入される前に解決されているため、Ninject が意図したバインディングを使用しないことだと思います。これを回避する方法はありますか。私はまだ何も見つけていません。