Usando Unity, ¿cómo se registran las asignaciones de tipos para los genéricos?
Estoy tratando de implementar unsolución de repositorio para Entity Framework pero estoy teniendo problemas para registrar los tipos que incluyen genéricos usando 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;
}
Necesito registrar la asignación de tipo para IRepository to Repository. pero estoy teniendo problemas con la sintaxis de Unity para este tipo de mapeo.
He intentado lo siguiente sin suerte:
container.RegisterType<IRepository<>, typeof(Repository<,>)>();
container.RegisterType<typeof(IRepository<>), Repository<,>>();
EDITAR
Basado, en la respuesta de @Steven tengo la siguiente implementación ahora:
// 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<>));