Usando o Unity, como você registra mapeamentos de tipos para genéricos?
Estou tentando implementar umsolução de repositório para o Entity Framework mas estou tendo problemas para registrar os tipos que incluem genéricos usando o Unity.
Dado:
// IRepository interface
public interface IRepository<TEntity>
{
// omitted for brevity
}
// Repository implementation
public class Repository<TEntity, TContext> : IRepository<TEntity>, IDisposable
where TEntity : class
where TContext : DbContext
{
// omitted for brevity
}
// service layer constructor
public MyServiceConstructor(IRepository<Account> repository)
{
_repository = repository;
}
Eu preciso registrar o mapeamento de tipo para IRepository para Repository. mas estou tendo problemas com a sintaxe do Unity para esse tipo de mapeamento.
Eu tentei o seguinte sem sorte:
container.RegisterType<IRepository<>, typeof(Repository<,>)>();
container.RegisterType<typeof(IRepository<>), Repository<,>>();
EDITAR
Com base na resposta @Steven, tenho a seguinte implementação agora:
// 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<>));