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<>));

Antworten auf die Frage(1)

Ihre Antwort auf die Frage