2010-12-14 27 views
0

とXMLによる設定するとき、私は、私はいくつかの実装ユニティ解決の問題という名前の登録依存

public class IFaceImp1 : IIFace<MyObj> {} 
public class IFaceImp2 : IIFace<MyObj> {} 

を持って

interface IIFace<T> 

ジェネリック型を取るのインタフェースを持っています特定のタイプのこのインタフェースのオブジェクト...

public MainViewModel(IIFace<MyObj> scrapper) { } 

そして私は、Unityはそれが

<containers> 
    <container> 
     <register type="IIFace[MyObj]" mapTo="IFaceImp1"> 
      <constructor> 
       <param name="loc" value="i am just a mock"> 
       </param> 
      </constructor> 
     </register> 
    </container> 
</containers> 

これは正常に動作移入するように設定する 問題があり、今私は後で私は名前によってそれらを解決できるように...、という名前の登録を作りたかったので、私は、それを命名し、最初に別のものを作ったが、うまくいかなかった。また、動作しません

<containers> 
    <container> 
     <register type="IIFace[MyObj]" mapTo="IFaceImp1" name="FirstImplementation"> 
      <constructor> 
       <param name="loc" value="i am just a mock"> 
       </param> 
      </constructor> 
     </register> 
    </container> 
</containers> 

... WH EN( "FirstImplementation")> <を解決しようとしている:私はこれまで問題を軽減しました。しかし、名前属性を削除して、解決方法<>()を使用すると、正常に動作します。 何が起こっているのか、アイデアがないのか、考えていますか?

<containers> 
    <container> 

     <register type="ViewModelBase" mapTo="MainViewModel" name="MockMainViewModel"> 
      <constructor> 
      <param name="imp"> 
       <dependency name="FirstImplementation" /> 
      </param> 
      </constructor> 
     </register> 

     <register type="IIFace[MyObj]" mapTo="IFaceImp1" name="FirstImplementation"> 
      <constructor> 
       <param name="loc" value="i am just a mock"> 
       </param> 
      </constructor> 
     </register> 
    </container> 
</containers> 

この方法では、この設定:

+0

名前がない場合、MainViewModelをインスタンス化しようとすると、Unityはコンテナ内のデフォルトの登録された型を呼び出します。ただし、名前がある場合は、Register呼び出しでその名前を設定する方法はありません。私は(多分私は間違っていると思う)私は何とか内部に名前の付いた依存関係があることを統一に伝える必要があると思うが、私はこれを行う方法を知らない –

答えて

0

[OK]を、私は、最終結果はこれに似たものであるXML で私のオブジェクトモデルを構築し、私はタグを使用するために必要な問題 何であったかが分かりましたResolve( "MockMainViewModel")で呼び出されたときにUnityに、そのコンストラクタで必要なパラメータを指定された名前( "FirstImplementation")で解決する(依存関係を通じて)ことを伝えています 私は基本的にタグを認識しませんでしたしかし、とにかく、これは同じ問題を引き起こし、なぜ解決が自動的に機能しないのかわからない人にとっては役に立ちます。正しいアプローチ。

関連する問題