关于类属性类型的WCF

时间:2012-02-22 17:18:34

标签: c# wcf service datacontract datamember

好的,我正在构建我的WCF服务。我遇到的问题是我的代理没有生成具有ListViewItem类型的类的代码,甚至我已经定义的类对象。

以下两个例子是我试图传递的类。

示例#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; }
    }

在第二个例子中,我很困惑为什么它很难通过它已经看到的我的Division类。当然WCF可以传递你自己的自定义对象??我非常感谢任何帮助,我知道在其他平台上为了序列化您自己的自定义对象,您必须为您的班级做一些特别的事情。我不确定WCF是否自动处理了这个问题。

修改

对此仍有任何其他帮助。

我还尝试将以下内容添加到InvoiceCharges类,但仍然无法正常生成代理。

[KnownType(typeof(ListViewItem))]

此外,这是代理的行为。我正在使用“添加服务引用”来执行此操作。

enter image description here

看看它是如何产生几个“InvoiceCharges”的,因为ListViewItem。我可以删除它的DataMember属性及其罚款。

1 个答案:

答案 0 :(得分:0)

ListViewItem是一种UI概念,在您的业务或服务代码中没有任何用处。重新思考“数据”(模型),而不是用户看到的内容并重新组织课程。

您的问题涉及无法序列化。除非你想重写UI位以使它们更加系列化,否则重新思考模型是最好的选择。