1

과도 생활 방식의 컨테이너에있는 구성 요소에 문제가 있습니다. 처음으로 resolve를 호출 할 때 예상대로 구현 유형의 생성자에 충돌했습니다.캐슬 윈저 과도 라이프 스타일이 활성화되지 않음

그러나 두 번째로 resolve를 호출하면 새 인스턴스가 생성되지 않습니다. 오히려 기존 인스턴스가 다시 사용됩니다. 나는 (I가 중단 점에서 디버깅 모드에서 실행시이 문제를 확인했습니다) 내 구성 요소의 LifestyleType가 과도로 설정되어 있기 때문에이 일어날해야한다고 생각하지 않습니다

Kernel.GetAssignableHandlers(typeof(object))[33].ComponentModel.LifestyleType 
// 33 is the verified index of my component type...this returns Transient as expected 

를 동일한 중단 점에서, 나는에서 다음을 실행 한

Resolve(Kernel.GetAssignableHandlers(typeof(object))[33].Service) 
    // this does NOT return a new instance! 
    // ...It returns the same instance from the first time Resolve was called. 
    // I can tell by the state of the object and because the constructor on the object is not called. 

업데이트 : 나는 아래로 문제가 좁혀했습니다

, 내 생각 엔 직접 실행 창 및 새로운 인스턴스가 구축되지 않는 것을 확인.

아래의 테스트는 실패합니다.

var container = new WindsorContainer(); 
    container.Kernel.AddComponent<MyLazyComponentLoader>(typeof (ILazyComponentLoader)); 

    var instance1 = container.Resolve<MyClass>(); 
    var instance2 = container.Resolve<MyClass>(); 

    Assert.AreNotSame(instance1, instance2); 

MyLazyComponentLoader 단순히 싱글 LifestyleType (을 디폴트되어

이는 ComponentModel에 알 수 없음으로 나타에도이인가 하여 구성 요소 (서비스)를 반환 디자인에 의해

감사

+0

그렇게 생각하지 않습니다. 테스트에서 재현 할 수 있습니까? –

+0

예, 설명을 업데이트했습니다. 감사. – Jeff

+2

예, 기본 라이프 스타일은 싱글 톤입니다. 알 수 없음은 명시 적으로 지정되지 않았 음을 의미하지만 Windsor는이를 싱글 톤으로 지정한 것처럼 취급합니다. 그것이 일시적 이길 원한다면 명백하게하십시오. –

답변

0

당 르지 Koźmic :?. 예, 기본 생활 습관이 s입니다 ingleton, Unknown은 명시 적으로 지정되지 않았 음을 의미하지만 Windsor는 사용자가 Singleton을 지정한 것처럼 처리합니다. 그것이 일시적 이길 원한다면 명백하게하십시오.

관련 문제