2013-03-20 5 views
1

Castle Windsor를 사용하여 해결하고자하는 WCF 서비스가 있습니다. 등록 정보는 다음과 같습니다 :Castle Windsor에서 프록시 클래스를 확인하는 방법

container.Register(Component.For<IBatchDataService>() 
.AsWcfClient(WCFEndpoint 
.FromConfiguration("Internal.IBatchDataService")) 
.LifestyeTransient()) 

이제 프로세스 중에 살아있는 프록시를 만들었습니다. 동일한 인터페이스 (IBatchDataService)를 노출하고 WCF 서비스에 대한 참조를 생성자 인수로 사용합니다. 다른 클래스가 프록시 클래스를 사용하도록 해결되었지만 프록시 클래스가 WCF 서비스를 확인하도록 Windsor에서이 기능을 설정하려면 어떻게해야합니까? 지금 당장이 있습니다 :

container.Register(Component.For<IBatchDataService>() 
.ImplementedBy<BatchDataServiceClient>()); 

새 프록시 클래스를 해결해야합니다.

답변

1

이 시도 :

constructorParameterName이 생성자에 IBatchDataService 매개 변수의 이름입니다
container.Register(
    Component.For<IBatchDataService>().AsWcfClient(WCFEndpoint.FromConfiguration("Internal.IBatchDataService")).LifestyeTransient().Named("wcfBatchDataService"), 
    Component.For<IBatchDataService>().ImplementedBy<BatchDataServiceClient>().AsDefault().DependsOn(
     Dependency.OnComponent("constructorParameterName", "wcfBatchDataService") 
) 

. 컴파일러에서 실행하지 않았으므로이 방법이 유용한 지 알려주십시오.

친절히 대해, Marwijn.

0

이것은 단순히 데코레이터 패턴입니다. 윈저 지원 그것 OOTB :

container.Register(
    Component.For<IBatchDataService>(). 
     ImplementedBy<BatchDataServiceClient>(), 
    Component.For<IBatchDataService(). 
     AsWcfClient(WCFEndpoint.FromConfiguration("Internal.IBatchDataService")). 
     LifestyleTransient());