2011-03-25 101 views
0

在我最新的項目中,我希望使用WCF作爲對象發送自定義數據。原因在於,當引入新的數據類時,我不必更新每個客戶端。 但是,當我嘗試發送此數據時,它永遠不會到達客戶端。使用WCF發送自定義數據作爲對象使用WCF

舉一個簡單的例子: 自定義類:

[DataContract] 
public class MyData 
    { 
    [DataMember] 
    public string Name { get ;set; } 
    [DataMember] 
    public id Value { get; set; } 

    public MyData(string name, id value) 
    { 
    this.Name = name; 
    this.Value = value; 
    } 
} 

當我想發送給客戶,我用:

object obj = new MyData("test",1); 
service.SendDataToClient(obj); 

客戶從來沒有從接收到這個事件服務,當我把它作爲對象。但是,當我將它作爲MyData而不是對象發送時,它的工作原理應該如此。我怎樣才能發送這個對象?

+0

注意:值屬性必須是int而不是id – BramW 2011-03-25 14:51:54

+0

當引入新的數據類時,是否不必更新客戶端?客戶如何創建新的對象發送? – 2011-03-25 15:25:08

+0

客戶端將收到的數據發送到在at-compiletime-unknown程序集中找到的UserControl,因此客戶端不必知道自定義類(因爲UserControl需要一個對象數組,然後將其轉換爲正確的類型) – BramW 2011-03-25 15:50:55

回答

1

如果你想發送自定義數據,簡單的方法是使用XElement而不是對象。另一種方法是通過ServicKnownTypeAttribute或創建通用解析器來定義所有可能的轉換類型(在這種情況下,您必須在客戶端和服務之間共享合同組裝)。檢查this great article

+0

您不能將自定義數據對象轉換爲XElement,可以嗎? XElement用於XML,我不希望在發送它之前將我的數據序列化爲xml。例如,可以發送一個bool作爲對象,所以爲什麼我不能將自己的類作爲對象發送? – BramW 2011-04-08 14:09:12