【发布时间】:2014-09-30 15:14:41
【问题描述】:
我有以下注册。目标是当需要注入 IDbSet 时,会将其从请求 IDataContext 中提取出来。
container.RegisterType<IDbSet<AuditRound>>(new InjectionFactory(c => c.Resolve<IDataContext>().AuditRounds));
var thisReturnsTrue = container.Registrations.Any(e => e.RegisteredType == typeof(IDbSet<AuditRound>));
var fails = container.Resolve<IDbSet<AuditRound>>();
它失败并显示类型 DbSet`1 没有可访问的构造函数的消息。似乎它正在尝试使用 ISomeClass 解析为 SomeClass 的约定,在本例中为 IDbSet 为 DbSet。我确实在注册中看到了 IDbSet 的注册,它似乎具有优先权。任何帮助表示赞赏。谢谢。
【问题讨论】:
-
确保您有一个 public 构造函数可用于您尝试创建的类型。
-
我不是在构造它,注册是一个回调函数,应该返回实例。
-
构造它的东西仍然需要一个可访问的构造函数。
-
感谢 OMGtechy,但这不是问题。
标签: unity-container ioc-container