Wie registriert man mit Unity Typzuordnungen für Generika?
Ich versuche, ein zu implementierenRepository-Lösung für Entity Framework Ich habe jedoch Probleme beim Registrieren der Typen, die Generika enthalten, mit Unity.
Gegeben:
// 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;
}
Ich muss die Typzuordnung für IRepository zu Repository registrieren. Ich habe jedoch Probleme mit der Unity-Syntax für diese Art der Zuordnung.
Ich habe folgendes ohne Glück versucht:
container.RegisterType<IRepository<>, typeof(Repository<,>)>();
container.RegisterType<typeof(IRepository<>), Repository<,>>();
BEARBEITEN
Basierend auf der Antwort von @Steven habe ich jetzt die folgende Implementierung:
// 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<>));