【发布时间】:2014-04-23 15:36:13
【问题描述】:
我正在尝试使用 UnitOfWork、Ninject 和 Repository 模式,现在我有这个代码:
public class UnitOfWork : IUnitOfWork
{
private readonly MyContext context;
public IGenericRepository<User> UserRepository { get; set; }
public IGenericRepository<EmailChangesByUser> EmailChangesByUserRepository { get; set; }
public IGenericRepository<PasswordChangesByUser> PasswordChangesByUserRepository { get; set; }
public IGenericRepository<MyUserDataChanges> MyUserDataChangesByUserRepository { get; set; }
public IGeoRepository GeoRepository { get; set; }
public IFileManager FileManager { get; set; }
public UnitOfWork(MyContext cont, IGenericRepository<User> userRepo,
IGenericRepository<EmailChangesByUser> emailChangesByUserRepo,
IGenericRepository<PasswordChangesByUser> passwordChangesByUserRepo,
IGenericRepository<MyUserDataChanges> myUserDataChangesByUserRepo,
IFileManager fileUploader, IGeoRepository geoRepo)
{ ... }
}
一切正常。但是我可以添加附加依赖项,所以构造函数会很胖。所以我试图以另一种方式做同样的事情(总结代码):
public class UnitOfWork : IUnitOfWork
{
private readonly MyContext _context;
private Hashtable _repositories;
public UnitOfWork(MyContext context)
{
_context = context;
}
public IRepository<TEntity> Repository<TEntity>() where TEntity : IEntity
{
if (_repositories == null)
{
_repositories = new Hashtable();
}
var type = typeof(TEntity).Name;
if (_repositories.ContainsKey(type))
{
return (IRepository<TEntity>)_repositories[type];
}
_repositories.Add(...) // HERE IS MY PROBLEM, ANY WAY TO INJECT HERE REPOS
return (IRepository<TEntity>)_repositories[type];
}
}
我不知道我是否能正确解释自己!
【问题讨论】:
标签: entity-framework dependency-injection ninject asp.net-mvc-5 unit-of-work