2017-03-17 1 views
0

Je suis face à une sorte de problème dans mon application:Unity Resolve C#

public interface IOrderServiceTest1 : IEntityBaseRepository<Order> 
{ 
} 

public class OrderServiceTest1 : IOrderServiceTest1 
{ 
} 

Dans mon web classe config Api je tente de résoudre ce:

var container = new UnityContainer(); 
container.RegisterType(typeof(IEntityBaseRepository<>), typeof(EntityBaseRepository<>)); 
container.RegisterType<IOrderServiceTest1, OrderServiceTest1>(new HierarchicalLifetimeManager()); 

Puis lorsque je tente de erreur de détermination montre jusqu'à:

IOrderServiceTest1 myServiceInstance = container.Resolve<IOrderServiceTest1>(); 

exception est survenue lors: lors de la résolution. L'exception est: InvalidOperationException - Le type actuel, .... Data.Repositories.EntityBaseRepository`1 [... Entities.Order], est une classe abstraite et ne peut pas être construit. Manquez-vous un mappage de type?

Voici le IEntityBaseRepository:

public interface IEntityBaseRepository<T> where T : class, IEntityBase, new() 
{ 
    IQueryable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties); 
    IQueryable<T> All { get; } 
    IQueryable<T> GetAll(); 
    T GetSingle(int id); 
    IQueryable<T> FindBy(Expression<Func<T, bool>> predicate); 
    void Add(T entity); 
    void Delete(T entity); 
    void Edit(T entity); 
} 

Puis-je avoir de l'aide pour résoudre ce genre de problème?

thx

+0

Afficher la 'IEntityBaseRepository' –

+0

@CallumLinington: interface publique IEntityBaseRepository où T: classe, IEntityBase, nouvelle() { – Goba

+0

Non, ajouter la mise en œuvre à la question initiale. –

Répondre

0

tout d'abord, le message dit que vous résolvez votre interface IEntityBaseRepository avec classe abstraite EntityBaseRepository, vous ne pouvez pas le faire car les classes abstraites ne peuvent pas être constructured, déclarer la classe des enfants et créer des instances d'entre eux. Ensuite, pourquoi cette erreur frappe-t-elle, parce que vous résolvez l'interface et son interface de base, de sorte qu'elle regarde votre chaîne d'héritage, et résout d'abord votre interface de base.