0

次のバインディングを宣言しています

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 が意図したバインディングを使用しないことだと思います。これを回避する方法はありますか。私はまだ何も見つけていません。

4

1 に答える 1