Используя Unity, как вы регистрируете сопоставления типов для обобщений?
Я пытаюсь реализоватьрешение для хранилища для Entity Framework но у меня возникают проблемы при регистрации типов, которые включают дженерики с использованием Unity.
Дано:
// IRepository interface
public interface IRepository<TEntity>
{
// omitted for brevity
}
// Repository implementation
public class Repository<TEntity, TContext> : IRepository<TEntity>, IDisposable
where TEntity : class
wh,ere TContext : DbContext
{
// omitted for brevity
}
// service layer constructor
public MyServiceConstructor(IRepository<Account> repository)
{
_repository = repository;
}
Мне нужно зарегистрировать отображение типа для IRepository в Repository. но у меня возникли проблемы с синтаксисом Unity для такого типа отображения.
Я попробовал следующее без удачи:
container.RegisterType<IRepository<>, typeof(Repository<,>)>();
container.RegisterType<typeof(IRepository<>), Repository<,>>();
РЕДАКТИРОВАТЬ
Основываясь на ответе @Steven, я теперь имею следующую реализацию:
// UnityRepository implementation
public class UnityRepository<TEntity> : Repository<TEntity, MyDbContextEntities>
where TEntity : class
{
public UnityRepository() : base(new MyDbContextEntities()) { }
}
// Unity bootstrapper
container.RegisterType(typeof(IRepository<>), typeof(UnityRepository<>));