Castle Windsor Container에서는 하나의 구성 요소가 두 개의 다른 인터페이스를 구현하고 동일한 구성 요소 인스턴스를 반환 할 때이를 해결할 수 있습니까? 예를 들어; 라는 메시지 와 함께 예외가 같이 내가 이것을하려고하면castsor 윈저 컨테이너가 2 개의 인터페이스를 구현하는 구성 요소의 동일한 인스턴스를 반환 할 수 있습니까?
var windsor = new WindsorContainer()
.AddComponent<InterfaceA, ClassAB>()
.AddComponent<InterfaceB, ClassAB>();
var classAB1 = windsor.Resolve<InterfaceA>();
var classAB2 = windsor.Resolve<InterfaceB>();
Assert.AreSame(classAB1, classAB2);
는 다음 클래스 ClassAB
의 두 개의 인스턴스를 반환 내가 다른 키를 제공하는 경우 이미 지정된 키에 등록 된 구성 요소가 있습니다.
편집 : 이상적으로 설정 파일에서 수행하고 싶습니다.
var someInstance = new Instance();
var container = new WindsorContainer();
container.Register(Component.For(typeof(IFirstInterface)).Instance(someInstance));
container.Register(Component.For(typeof(ISecondInterface)).Instance(someInstance));
을 ...하지만 당신은 Instance
클래스를 인스턴스화 할 수있는 컨테이너의 능력을 상실하므로 종속성은 자동적으로 해결되지 않습니다 : 그것은과 같이 수행 할 수 있습니다 -
Windsor FAQ에 질문이 추가되었습니다. http://using.castleproject.org/display/IoC/FAQ –