Unity DI,分层应用程序中的设计时配置

时间:2017-04-10 08:00:35

标签: c# dependency-injection unity-container

我们几年来一直使用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切换实现。

0 个答案:

没有答案