C# 统一DI配置

C# 统一DI配置,c#,unitydi,C#,Unitydi,我是Unity DI的新手,在解决依赖关系时遇到了一个错误。错误消息显示“当前类型Data.Core.Repository.ILogger是一个接口,无法构造。是否缺少类型映射?” 配置和代码如下所示 配置 <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practic

我是Unity DI的新手,在解决依赖关系时遇到了一个错误。错误消息显示“当前类型Data.Core.Repository.ILogger是一个接口,无法构造。是否缺少类型映射?”

配置和代码如下所示

配置

 <configSections>
    <section name="unity"
    type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/>
  </configSections>

  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <assembly name ="BusinessLogic"/>
    <assembly name ="Data.Core"/>
    <namespace name="Data"/>
    <namespace name="Data.Core"/>
    <namespace name="Data.Core.Implimentation"/>
    <namespace name="Data.Core.Repository"/>
    <namespace name="BusinessLogic" />

    <typeAliases>
      <typeAlias alias="Logger1" type="Data.Core.Implimentation.Logger1,Data.Core.Implimentation" />
      <typeAlias alias="Logger2" type="Data.Core.Implimentation.Logger2,Data.Core.Implimentation" />
      <typeAlias alias="ILogger" type="Data.Core.Repository.ILogger,Data.Core.Repository" />
    </typeAliases>
    <container>
      <register type="ILogger" mapTo="Logger2" name="Loggerxcs" >
     </register>
    </container>
当我试着用下面的方法从c代码中解析出深度时,一切都很好

         IUnityContainer container = new UnityContainer();
       container.RegisterType<ILogger, Logger2>();
IUnityContainer container=newunitycontainer();
container.RegisterType();

但是当我把它移动到config时,我得到了上面的错误。提前感谢。

问题在于,在配置版本中,您已将映射命名为“Loggerxcs”

但是,LoggerBL将一个未命名的ILogger作为其参数

除去

name="Loggerxcs" 

根据您的配置,您应该很好

问题在于,在配置版本中,您已将映射命名为“Loggerxcs”)

但是,LoggerBL将一个未命名的ILogger作为其参数

除去

name="Loggerxcs" 

根据您的配置,您应该很好

你好@RB。非常感谢您的更新。但是我已经加载了配置,您可以在我的前端代码(上面发布)中找到它,“IUnityContainer container=new UnityContainer().LoadConfiguration(section);”Hi@RB。非常感谢您的更新。但是我已经加载了配置,您可以在我的前端代码(上面发布)中找到它,“IUnityContainer container=new UnityContainer().LoadConfiguration(section);”完美!非常感谢你。。这就是问题所在,太好了!非常感谢你。。这就是问题所在。
name="Loggerxcs"