在ASP.NET MVC解决方案上,我有一个服务层,其中包含每个Model的服务。例如,对于DocumentModel,我有一个文档服务,它由UoW类实例化,它像工厂一样工作并执行保存:
public class UnitOfWork : IUnitOfWork
{
private IRepositoryFactory _repositoryFactory;
public UnitOfWork()
: this(new RepositoryFactory())
{
}
public UnitOfWork(IRepositoryFactory repositoryFactory)
{
_repositoryFactory = repositoryFactory;
}
private IDocumentService _DocumentService;
public IDocumentService DocumentService
{
get
{
if (_DocumentService == null)
{
_DocumentService = new DocumentService(_repositoryFactory.DocumentRepository);
}
return _DocumentService;
}
}
}
现在说我需要能够从DocumentService访问2或3个其他存储库。注入这个新存储库的最佳方法是什么?在构造函数中添加它们(如果我需要添加另一个存储库可能会变得很麻烦),或者我应该注入存储库工厂(IRepositoryFactory),这将允许我在DocumentService中访问我可能需要的任何存储库。