首先,我有一个dbcontext工厂,它定义了公共类
DatabaseFactory:disposable,IDatabaseFactory,它只是创建一个上下文(如果尚不存在).
接下来,我有一个通用的存储库,它被定义为公共类Repository< T> :IRepository< T>
其中T:在构造函数中获取工厂的类.我有其他具体的存储库继承自这个.
我还有一个工作类单元,它定义了公共类UnitOfWork:IUnitOfWork,它在构造函数中获取工厂并将所有更改保存到工厂内的上下文中(所有存储库应该使用).
在我的控制器中,我将构造函数设置为公共ProjectController(IDatabaseFactory工厂,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>();
解决方法
原文地址:https://www.jb51.cc/csharp/91180.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。