0

好的,所以我正在构建我的 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))]

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

在此处输入图像描述

看看它是如何生成几个“InvoiceCharges”的,这都是因为那个 ListViewItem。我可以删除它的 DataMember 属性,它很好。

4

1 回答 1

0

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

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

于 2012-02-22T22:22:34.677 回答