Spring.net ContextRegistry.GetContext失败,有2个接口实现

时间:2017-05-26 14:19:39

标签: dependency-injection spring.net

我有一个使用Spring.net的.net application。 另外还有一个interface的实现。应该使用哪一个 - 它基于configuration file

Spring的bootstrap

<objects>
 <object id="Impl1" name="Impl1" type="namespace.Impl1, IInterface" >
  </object>
  <object id="Impl2" name="Impl2" type="namespace.Impl2, IInterface" >   
  </object>
</objects>

失败

var appContext = ContextRegistry.GetContext();

错误消息是:

  

未处理的类型异常   &#39; System.Configuration.ConfigurationErrorsException&#39;发生在   Spring.Core.dll

     

附加信息:通过表达的不满意依赖性   索引为2的构造函数参数[namespace.IInterface]:否   定义[namespace.IInterface]类型的唯一对象:expected   单个匹配对象但找到2:   System.Collections.Specialized.OrderedDictionary

1 个答案:

答案 0 :(得分:0)

我找到了另一种配置,其中autowire设置被设置为自动检测。

<object id="workspaceExportService" type="namespace.Imp3, Namespace"
          autowire="autodetect" />

此类Imp3具有带IInterface参数的构造函数。因此,它试图解决IInterface的实现,但找到其中两个。

作为解决方案,您可以将lazy-init="true"属性添加到对象节点。