【发布时间】:2012-01-31 16:18:53
【问题描述】:
首先,我有一个定义为 public class DatabaseFactory : Disposable, IDatabaseFactory 的 dbcontext 工厂,如果上下文不存在,它只会创建一个上下文。
接下来,我有一个定义为public class Repository<T> : IRepository<T>
where T : class 的通用存储库,它采用构造函数中的工厂。我还有其他继承自这个的具体存储库。
我还有一个定义为 public class UnitOfWork : IUnitOfWork 的工作单元类,它在构造函数中获取工厂并将所有更改保存到工厂内的上下文(所有存储库都应该使用)。
在我的控制器中,我将构造函数设置为public ProjectController(IDatabaseFactory factory, IUnitOfWork unitOfWork, IProjectRepository projectRep, IUserRepository userRep)。
基本上,我需要将相同的工厂实例传递给工作单元和所有存储库。使用 ninject,它为每个对象创建一个新工厂,而不是将单个实例传递给所有对象。有没有办法只允许通过 ninject 传递单个实例,或者我没有正确创建我的工厂和/或没有正确理解 ninject?
这是我在 ninject 中的绑定:
kernel.Bind<IProjectRepository>().To<ProjectRepository>();
kernel.Bind<IIssueRepository>().To<IssueRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
【问题讨论】:
标签: c# asp.net-mvc ninject