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>
이 방법이 구성 :
이름이없는 경우 MainViewModel을 인스턴스화 할 때 Unity가 컨테이너의 기본 등록 유형을 호출한다는 것이 문제라고 생각합니다. 그러나 이름이있을 때 Register 호출에서 해당 이름을 설정할 수있는 방법이 없습니다. 나는 (어쩌면 내가 틀렸어) 나는 내부에 이름있는 의존성이 있음을 어떻게 든 단합을 말할 필요가 있다고 생각하지만, 나는 이것을 어떻게하는지 모른다. –