我在我的应用程序中遇到了一个问题:
public interface IOrderServiceTest1 : IEntityBaseRepository<Order>
{
}
public class OrderServiceTest1 : IOrderServiceTest1
{
}
在我的网络Api配置类中,我尝试解决此问题:
var container = new UnityContainer();
container.RegisterType(typeof(IEntityBaseRepository<>), typeof(EntityBaseRepository<>));
container.RegisterType<IOrderServiceTest1, OrderServiceTest1>(new HierarchicalLifetimeManager());
然后当我尝试解决错误时出现:
IOrderServiceTest1 myServiceInstance = container.Resolve<IOrderServiceTest1>();
在解析时发生异常。
异常是:InvalidOperationException - 当前类型,.... Data.Repositories.EntityBaseRepository`1 [... Entities.Order],是一个抽象类,无法构造。你错过了类型映射吗?
这里是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);
}
我可以帮助解决这类问题吗?
THX
答案 0 :(得分:0)
首先,消息说你用抽象类IEntityBaseRepository
解析你的接口EntityBaseRepository
,你不能这样做,因为抽象类不能被构造,声明子类并创建它们的实例。
第二,为什么会出现此错误,因为您解析了接口及其基本接口,因此它会查看您的继承链,并首先解析您的基本接口。