2012-03-19 56 views
0

嘗試在具有相同代碼庫的兩個系統之間發送複雜類型。他們都知道與數據傳輸介質相同的對象。但是,當我在消費者代理上傳遞對象時,它在Web服務名稱空間中顯示爲對象而不是應用程序中的對象。Wcf對象類型

有無論如何,我可以定義使用內部對象?

[WebMethod] 
public void Run(TransportObject transport) 

出現在我的應用程序MyNamespace.Webservice.Transport,而不是MyNamespace.Objects

+0

'[WebMethod]'不是WCF - 它是ASMX。 – 2013-01-10 06:44:35

回答

1

正如亨克所說,WCF中的類型共享是默認行爲。

我將有資格通過擴大它並演示瞭如何實現它:

因此而不是讓Visual Studio中爲你生成一個服務引用,你可以有WCF創建代理時,執行由使用的ChannelFactory。

例如:

// Create service proxy on the fly 
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile"); 
var proxy = factory.CreateChannel(); 

// Create data contract 
var requestDataContract = new MyRequestType(); 

// Call service operation. 
MyResponseType responseDataContract = proxy.MyServiceOperation(requestDataContract); 

在上面的例子中,IMyServiceContract是您的服務合同,並0​​和MyResponseType是數據的合同,您可以通過引用該服務還引用(它定義了組件使用這些類型)。

1

[WebMethod]意味着它是一個基於ASMX服務,而不是一個WCF服務下...

[ServiceContract]

[OperationContract]再試一次

在WCF中共享類型是可能的,我認爲它甚至是默認行爲。

+0

@marc_s - 是的,你是對的。我會編輯。 – 2012-03-19 11:47:28