我不确定这是否可行,但我希望有一个可以使用实体框架加载和保存的类,它还使用 Ninject 在运行时使用具体实现填充接口。
我从这样的构造函数开始:
public FancyObject(ICatProvider kitty)
{
this.kitty = kitty;
}
就 Ninject 而言,这很有效,我们得到了一个 Cat - 它适用于使用 Entity Framework 将实体保存到 SQLServer。但是,在尝试加载实体时它会失败,因为 Entity Framework 需要一个无参数的构造函数。
所以我试着把它放在这样的属性上:
[Inject]
public ICatProvider kitty { get; set; }
public FancyObject()
{
}
这可以从数据库加载,但 Kitty 始终为空。
我在绑定中的所有内容是:
kernel.Bind<ICatProvider>().To<FancyFileBasedCat>();
我猜这是因为我使用实体框架来创建实体,所以 Ninject 没有进入。
我在这里遗漏了一些明显的东西吗?有没有很好的方法来做到这一点?