과도 생활 방식의 컨테이너에있는 구성 요소에 문제가 있습니다. 처음으로 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에 알 수 없음으로 나타에도이인가 하여 구성 요소 (서비스)를 반환 디자인에 의해
이감사
그렇게 생각하지 않습니다. 테스트에서 재현 할 수 있습니까? –
예, 설명을 업데이트했습니다. 감사. – Jeff
예, 기본 라이프 스타일은 싱글 톤입니다. 알 수 없음은 명시 적으로 지정되지 않았 음을 의미하지만 Windsor는이를 싱글 톤으로 지정한 것처럼 취급합니다. 그것이 일시적 이길 원한다면 명백하게하십시오. –