これが可能かどうかはわかりませんが、実行時にNinjectを使用してインターフェースに具体的な実装を設定するEntity Frameworkを使用してロードおよび保存できるクラスが必要です。
次のようなコンストラクターから始めました。
public FancyObject(ICatProvider kitty)
{
this.kitty = kitty;
}
これはNinjectに関する限り機能し、Catを取得します-そして、Entity Frameworkを使用してエンティティをSQLServerに保存するために機能します。ただし、Entity Framework にはパラメーターなしのコンストラクターが必要なため、エンティティを読み込もうとすると失敗します。
そこで、次のようなプロパティに配置してみました。
[Inject]
public ICatProvider kitty { get; set; }
public FancyObject()
{
}
これは DB からロードできますが、Kitty は常に null です。
バインディングにあるのは次のとおりです。
kernel.Bind<ICatProvider>().To<FancyFileBasedCat>();
これは、Entity Framework を使用してエンティティを作成しているため、Ninject が調べていないためだと思います。
ここで明らかな何かが欠けていますか?これを行う良い方法はありますか?