我遇到了DbContext,
class RepoA : IRepoA {
public RepoA(IDbContext context)...
}
class RepoB : IRepoB{
public RepoB(IDbContext context)...
}
和Ninject
kernel = new StandardKernel();
kernel.bind<IDbContext>().to<DbContext>();
kernel.bind<IRepoA>().to<RepoA>();
kernel.bind<IRepoB>().to<RepoB>();
在这种情况下,IDbContext创建了两次。 我希望RepoA和RepoB共享相同的IDbContext对象
有没有办法做到这一点?
答案 0 :(得分:0)
您应该使用范围界定(请参阅https://github.com/ninject/Ninject/wiki/Object-Scopes)。例如。在单例范围内绑定DbContext
,如下所示:
kernel.Bind<IDbContext>().To<DbContext>().InSingletonScope();
应该让存储库共享对象。 InSingletonScope()
可能不适合您的用途,但这取决于您的申请。