我们几年来一直使用Unity容器进行依赖注入而没有任何问题。简化后我们有三层Web /域/数据。
我们使用设计时配置来切换不同构建的一些实现。
IMyDataInterface是从web.config注册的。数据层成功解析IMyDataInterface。尝试从域层解析IMyDataInterface时,它失败并显示以下消息。
InvalidOperationException - 当前类型IMyDataInterface是一个接口,无法构造。你错过了类型映射吗?
每个层都有一个UnityConfig类,用于注册依赖项。
Web creates IUnityContainer instance A
Calls Web.UnityConfig.RegisterTypes(A)
Registers design-time types from web.config by running A.LoadConfiguration()
(web.config contains registration of IMyDataInterface)
Registers types from Web-layer
Calls Domain.UnityConfig.RegisterTypes(A)
Registers types from Domain-layer
Calls Data.UnityConfig.RegisterTypes(A)
Registers types from Data-layer
public class MyDataClass
{
public MyDataClass(IMyDataInterface dependency)
{
// dependency is resolved
}
}
public class MyDomainClass
{
public MyDomainClass(IMyDataInterface dependency)
{
// dependency FAILS to resolve
}
}
如果我在Data.UnityConfig中注册了类型IMyDataInterface,一切正常,但我需要能够在设计时使用web.config切换实现。