3

here 지정된 Lazy<T> 느리게 용기 내에 LazyOfTComponentLoader 등록하고 해결하여 성 윈저 성분을 해결하는 것이 가능하다 :자동 느리게 분해 성분

container.Register(
    Component.For<ILazyComponentLoader>().ImplementedBy<LazyOfTComponentLoader>(), 
    Component.For<ISomeService>().ImplementedBy<ServiceImpl>().LifestyleTransient() 
    ); 

var lazy = container.Resolve<Lazy<ISomeService>>(); 

lazy.Value.DoSomething(); 

을 그러나 등록 할 수 있습니다 컨테이너에있는 구성 요소가 인 경우 Lazy<T>으로 항상으로 해결되고 해결 호출에서 지연을 지정하지 않아도됩니까?

특히 생성자 주입을 사용할 때 MVC 프로젝트의 컨트롤러에 지연 구성 요소를 주입하는 방법을 알고 싶습니다.

편집 : here처럼 컨트롤러의 생성자에서 Lazy<ISomeService> someService을 매개 변수로 지정할 수 있습니다. 그러나 등록 프로세스를 통해 구성 요소가 느슨하게 처리되도록하는 방법이 있습니까?

답변

3

느린 로딩 인스턴스의 구성 요소를 해결하려면 Resolve<Lazy<ISomeService>>()을 수행해야합니다. 함수 lazy.Value는 구성 요소의 실제 해결을 수행합니다. 문제를 해결하려면 직접 구성 요소를 얻으십시오.

지연 성을 사용하지 않고 처음 사용할 때만 해결되는 구성 요소가 실제로 필요한 경우 인터셉터 작성에 의존 할 수 있습니다.

행운을 빕니다. Marwijn.