2013-03-20 62 views
1

我有一個WCF服務,我試圖使用溫莎城堡解決。看慣了這樣的登記:如何解決溫莎城堡代理類

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

現在我已經創建了一個生活在過程中的代理。它公開了相同的接口(IBatchDataService),並將WCF服務的引用作爲構造函數參數。我如何在Windsor中設置它,以便其他任何類都可以使用代理類,但代理類會解析爲WCF服務。我現在有這個:

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

應該解決新的代理類。

回答

1

試試這個:

container.Register(
    Component.For<IBatchDataService>().AsWcfClient(WCFEndpoint.FromConfiguration("Internal.IBatchDataService")).LifestyeTransient().Named("wcfBatchDataService"), 
    Component.For<IBatchDataService>().ImplementedBy<BatchDataServiceClient>().AsDefault().DependsOn(
     Dependency.OnComponent("constructorParameterName", "wcfBatchDataService") 
) 

凡constructorParameterName是你的構造函數中的參數IBatchDataService的名稱。 我沒有在編譯器中運行它,所以請讓我知道這是否適用於您。

親切的問候, Marwijn。

0

它只是一個裝飾模式。溫莎支持它OOTB:

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