3

これが可能かどうかはわかりませんが、実行時に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 が調べていないためだと思います。

ここで明らかな何かが欠けていますか?これを行う良い方法はありますか?

4

1 に答える 1