2009-07-22 68 views
2

我有一個datacontract,它具有重要的屬性。 例如,下面的代碼:在WCF的DataContracts上傳遞屬性

[DataMember] 
[Description("My Description")] 
public string Name { get; set; } 

我想Description屬性是在客戶端代理自動生成。

除了大量重複之外,是否有解決方案或解決方法?

非常感謝!

回答

1

你不,不是真的。請記住,您不是傳遞對象的實例,而是傳遞文本消息。

如果它真的很重要,那麼你可以放棄生成的代理類,並共享數據對象和契約的實現,但是這是一個更多的工作,當然你運行客戶端和服務器變得風險同步。

如果你想嘗試一下,然後把你的合同和操作界面到一個單獨的程序,公共修飾符,請嘗試以下

Binding binding = new BasicHttpBinding(); // or which one you 
EndpointAddress endpoint = 
    new EndpointAddress("endpointUrl"); 
ChannelFactory<IServiceInterface> channelFactory = 
    new ChannelFactory<IServiceInterface>(binding, endpoint); 

IServiceInterface client = channelFactory.CreateChannel(); 
MyDataType result = client.Operation(myOtherDataType); 

((IClientChannel)client).Close(); 
+0

我忘了提,我的當事人是在Silverlight中,這意味着它無法將共享組件(或者甚至是源代碼)。 – Tomerico 2009-07-22 08:38:05

0

你可能必須要非常深入挖掘創作的服務描述(以及生成的WSDL文件),以便以客戶端可以檢測並重新創建它們的形式傳遞這些屬性。接近不可能的,真的。

另外:記住WCF的設計是可以互操作的 - Java或PHP客戶端應該如何處理這些屬性,真的嗎?

面向服務的編程與「常規」基於組件或對象的系統完全不同。你所做的只是傳遞文本或二進制格式的消息。這確實限制了您在處理基於.NET的對象和組件時可能習慣的某些事情 - 它在SOA世界中的作用不同。

馬克