2017-05-26 12 views
0

私は.net applicationを持っています。これはSpring.netを使用しています。 interfaceの2つの実装もあります。どちらを使用すべきか - それはconfiguration fileに基づいています。Spring.net ContextRegistry.GetContextは2つのインターフェイス実装で失敗します

春ためbootstrapはあり

それは

var appContext = ContextRegistry.GetContext(); 

に失敗し

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

エラーメッセージは次のとおりです。

タイプ 'System.Configuration.ConfigurationErrorsException' の未処理の例外で発生しました Spring.Core.dll

追加情報: 単一一致するオブジェクトが期待しかし2見出さ: システムタイプ[namespace.IInterface]に定義されているの無 固有のオブジェクト:不満依存型[namespace.IInterface]のインデックス2と コンストラクタ引数を通して発現しました.Collections.Specialized.OrderedDictionary

答えて

0

autowire設定が自動検出に設定されている別の構成が見つかりました。

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

このクラスImp3IInterfaceパラメータを持つコンストラクタを持っています。したがって、IInterfaceの実装を解決しようとしますが、そのうち2つを見つけます。

解決策として、オブジェクトノードにlazy-init="true"属性を追加できます。

関連する問題