我正在尝试在我的 asp.net MVC 项目中使用存储库和工作单元模式,但是我很难弄清楚如何将存储库依赖项传递给工作单元。工作单元的一般标准结构似乎如下:
public class UnitOfWork : IUnitOfWork
{
private ICustomerRepository _customerRepository;
public ICustomerRepository CustomerRepository
{
get
{
if (this._customerRepository == null)
{
this._customerRepository = new CustomerRepository(someContext);
}
return _customerRepository;
}
}
}
具体来说,令我困惑的是这一行:
this._customerRepository = new CustomerRepository(someContext);
通过为存储库定义接口,随着时间的推移和业务需求的变化,是否能够将存储库依赖项注入 UoW 的整个想法?如果是这样,为什么我在网上看到的几乎每个实现都执行上述操作?在这个实现中,我们应该如何将一个新的实例传递ICustomerRepository
给 UoW?当然,我们还需要更改 UoW 中的代码,这不违反开放关闭原则吗?我将如何将存储库注入我的 UoW?
我环顾四周,这个问题似乎以前被问过,但我仍然很难理解提议的解决方案(门面服务)。