使用接口将数据库上下文注入到类中
我期待将数据库上下文注入到实现我的接口similar to this post的所有类中。使用接口将数据库上下文注入到类中
我有什么
public abstract class Service {
public Service(Context context)
{
Context = context;
}
public Context Context { get; }
}
每个服务类将有一个接口与方法
interface IRecipeTypeIndexService {
IEnumerable<RecipeType> GetAll();
}
所有服务类将继承抽象Service
类,所以我此刻的具体类的样子
public class RecipeTypesIndexService : Service, IRecipeTypeIndexService {
public RecipeTypesIndexService(Context context) : base(context)
{
}
public IEnumerable<RecipeType> GetAll()
{
return Context.RecipeTypes.AsEnumerable();
}
}
而我的ninject绑定看起来像
Kernel.Bind<DbContext>().ToSelf().InRequestScope(); Kernel.Bind<Service>().ToSelf().InRequestScope();
我想什么做的是它让我的接口IRecipeTypeIndexService
等服务接口创建继承另一个接口IService
这是Ninject绑定到抽象Service
类,从而使实施IWhateverService
都必须具体类有一个注入数据库上下文到基类的构造函数,所以我的具体类看起来像这样:
public class RecipeTypesIndexService : IRecipeTypeIndexService {
public RecipeTypesIndexService(Context context) : base(context)
{
}
public IEnumerable<RecipeType> GetAll()
{
return Context.RecipeTypes.AsEnumerable();
}
}
这可能吗?这是我第一次使用Ninject,并且我是使用依赖注入的新手。
回答:
UPDATE
我事后知道这是不可能的事情。
正如我设置Ninject,以便在构造函数中的任何位置具有已经初始化的上下文,我不需要抽象类。然后
我的服务类将是这样的:
public class RecipeTypesIndexService : IRecipeTypeIndexService {
private Context context { get; }
public RecipeTypesIndexService(Context context) : base(context)
{
this.context = context;
}
public IEnumerable<RecipeType> GetAll()
{
return context.RecipeTypes.AsEnumerable();
}
}
我并不需要一个抽象基类的。
以上是 使用接口将数据库上下文注入到类中 的全部内容, 来源链接: utcz.com/qa/260033.html