【发布时间】:2010-12-01 04:08:57
【问题描述】:
这是我的存储库类:
public interface IMyRepository : IRepository<IMyEntity>{}
public class MyRepository : IMyRepository
{
...
}
注册方法如下:
container.Register<IMyRepository, MyRepository >();
这是我想要解决存储库的方式:
IRepository<IMyEntity> repository = container.Resolve<IRepository<IMyEntity>>();
尝试以这种方式解析存储库会报错:
依赖项解析失败,type = "CMCore.Repository.IRepository`1[CMCore.Data.ICmCoreLog]",name = "(none)"。 异常发生时:解决时。
异常是:InvalidOperationException - 当前类型 IRepository`1[IMyEntity] 是一个接口,无法构造。您是否缺少类型映射?
发生异常时,容器为:
正在解析 IRepository`1[IMyEntity],(none)
我的方法有什么问题?实现上述功能的正确方法是什么?
非常感谢!
附:有时我想通过 IMyRepository 解决我的课程,有时通过 IRepository。我应该注册两次课程吗?
【问题讨论】:
-
你为什么需要这个额外的
IMyRepository接口? -
这不能回答问题:-)
-
对不起,:) 一些专门的存储库有自己的方法(例如,GetMyEntityBySomeCriterias),它们封装了查询逻辑......试图回答你的问题,实际上,我可以删除 IMyRepository 的使用IRepository
。这需要一些努力,但是……还是可行的……你觉得我需要走这条路吗?也许您最好创建一个答案...?
标签: .net dependency-injection unity-container