2010-12-14 7 views
0

I 내가 주입 도착 뷰 모델을 정의 몇몇 구현유니티 해상도 문제

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

가이어서 일반적인 유형

interface IIFace<T> 

소요 인터페이스를 가지고 그것은 특정 유형에 대한이 인터페이스의 객체입니다 ...

public MainViewModel(IIFace<MyObj> scrapper) { } 

그리고 내가 유니티는

<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> 

... 어 엉 ("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

좋아, 내가 XML 최종 결과에 내 개체 모델을 구축, 태그를 사용하는 데 필요한 문제 무엇인지 발견이 비슷한입니다 Resolve ("MockMainViewModel")로 호출 할 때 Unity에게 생성자에서 필요한 매개 변수 ("FirstImplementation")로 필요한 매개 변수를 구체화하고 (의존성을 통해) 기본적으로이 태그를 인식하지 못했습니다. ,하지만 어쨌든 이것은 동일한 문제가 발생하고 해상도가 자동으로 작동하지 않는 이유를 알지 못하는 사람에게 유용 할 수 있습니다. 올바른 접근법.