2010-07-23 5 views
2

성 윈저에서는 싱글 톤 라이프 사이클을 사용하여 인스턴스를 등록 할 때 열혈적으로 인스턴스화 할 수있는 방법이 있습니까?Castle Windsor를 사용하여 싱글 톤으로 등록 된 인스턴스를 열심히 인스턴스화 할 수 있습니까?

업데이트 : 좀 더 자세한 내용은 여기 도움이 될 것입니다 생각

는 : 내가 관심이있는 이유

  1. 이 인스턴스 시작 시간에 실행하는 것이 유리하다 일부 초기화 코드를 포함, 그건 이렇게.
  2. AllTypes.Pick()을 사용하여 이러한 인스턴스 중 상당수를 등록하고 있으므로 컨테이너를 만들 때 별도로 컨테이너의 각 인스턴스를 수동으로 해결하지 않아도되는 솔루션을 선호합니다.

답변

4

예, (윈저와 함께 상자에서 나오는) 시동 가능한 시설을 사용 할 수 있습니다

container.AddFacility<StartableFacility>(
// optionally in v2.5 
f=> f.DeferredStart() 
); 
container.Register(
    AllTypes.FromThisAssembly() 
     .Pick().WhateverYouWant() 
     .Configure(c => c.Start()); 

DeferredStart 방법은 V2.5의 새로운 및 you can see here 그렇습니다 왜 그것을하는 것이 좋습니다 것 그걸 써. 샘플에서는 v2.5의 새로운 API 중 일부를 사용하지만 v2.1을 사용하는 경우이를 구현하는 방법에 대한 아이디어를 제공해야합니다. 이전 버전의

는 방법 Start()Startable()

+0

감사합니다라고! 이게 정확히 내가 찾고 있었던거야. – DanP

+0

다른 질문 하나 ... 내 "시작"논리가 구성 요소의 생성자에서 호출됩니다. 그래서이 방법을 사용하여 어떻게 작동합니까? – DanP

+1

'Start' 메소드를 사용하면 객체를 인스턴스화합니다. 구성 요소에 시작 논리가있는 메소드를 사용하려면'StartUsingMethod (c => c.YourStartMethod) '를 사용하십시오. 다른 말로하면 - 제가 보여준 예제는 여러분이 원하는 것을 정확하게 수행합니다. –

관련 문제