2012-02-22 70 views
0

好吧,我正在構建我的WCF服務。我遇到的問題是我的代理沒有生成類型爲ListViewItem的類的代碼,甚至是我已經定義的類對象。關於類屬性類型的WCF

下面的兩個例子是我試圖通過的類。

例子#1

[DataContract] 
public class InvoiceCharges { 
    #region Property... 
    private int _invoiceChargeID; 
    private ListViewItem _listViewItem; 

    [DataMember] 
    public int InvoiceChargeID { 
     get { return _invoiceChargeID; } 
     set { _invoiceChargeID = value; } 
    } 
    [DataMember] 
    public ListViewItem ListViewItem { 
     get { return _listViewItem; } 
     set { _listViewItem = value; } 
    } 
    #endregion 

例2

[DataContract] 
public class Users { 
    #region Properties... 
    private int _userID; 
    private Divisions _Division = new Divisions(); 

    [DataMember] 
    public int UserID { 
     get { return _userID; } 
     set { _userID = value; } 
    } 
    [DataMember] 
    public Divisions Division { 
     get { return _Division; } 
     set { _Division = value; } 
    } 

在第二個例子中,我很困惑,爲什麼它有一個硬的時間正好路過我司類,它已經看到。當然WCF可以傳遞你自己的自定義對象?任何幫助都非常感謝,我知道在其他平臺上爲了序列化你自己的自定義對象,你必須爲你的課程做一些特別的事情。我不確定WCF是否自動處理這個問題。

編輯

在這個任何其他幫助,仍然讚賞。

我也嘗試將以下內容添加到InvoiceCharges類中,但仍無法正確地看到代理生成。

[KnownType(typeof(ListViewItem))] 

此外,這是代理的行爲。我正在使用添加服務引用來執行此操作。

enter image description here

看看它是如何產生它的幾個都因爲一個ListViewItem的 「InvoiceCharges」。我可以刪除它的DataMember屬性和罰款。

+0

Divisions類是否也具有DataContract屬性? – 2012-02-22 17:20:20

+0

是的,奇怪的是當我從自定義對象(如ListViewItem屬性和Division屬性)中刪除它有問題的[DataMember]屬性。該類在客戶端成功生成代理。 – meanbunny 2012-02-22 17:23:38

+0

嗯,我猜ListViewItem沒有標記DataContract屬性,所以這可能是問題。由於您沒有發佈代碼,因此無法確定Divisions類。 – 2012-02-22 17:56:51

回答

0

ListViewItem是一個UI概念,在您的業務或服務代碼中不起任何作用。重新思考「數據」(模型),而不是用戶看到和重新構建課程的內容。

問題處理無法序列化。除非你想重寫UI位以使它們更友好,否則重新考慮模型是最好的選擇。