2012-02-22 66 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位以使它们更友好,否则重新考虑模型是最好的选择。