Mit der Einheit, wie Sie sich registrieren, geben Sie die Zuordnungen für Generika?

Ich versuche, die Implementierung eines repository-Lösung für Entity Framework aber ich habe Probleme bei der Registrierung der Typen, die gehören Generika mit Einheit.

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

Brauche ich zu registrieren, geben Sie mapping für IRepository Repository. aber ich habe Schwierigkeiten mit der Einheit syntax für diese Art der Zuordnung.

Ich habe Folgendes versucht, ohne Erfolg:

container.RegisterType<IRepository<>, typeof(Repository<,>)>();
container.RegisterType<typeof(IRepository<>), Repository<,>>();

BEARBEITEN

Basierend auf @Steven Antwort habe ich die folgende Implementierung ist nun:

//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<>));
InformationsquelleAutor Mark Erasmus | 2013-09-18
Schreibe einen Kommentar