WCF относительно типов свойств класса - PullRequest
0 голосов
/ 22 февраля 2012

Хорошо, я создаю службу 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; }
    }

Во 2-м примере я запутался, почему ему трудно просто пройти мой класс Дивизиона, который он уже видит. Конечно, WCF может передавать свои собственные объекты ?? Любая помощь очень ценится, я знаю, на других платформах, чтобы сериализовать свой собственный объект, вы должны сделать что-то особенное для вашего класса. Я не был уверен, справился ли WCF с этим автоматически или нет.

EDIT

Любая другая помощь по этому вопросу все еще приветствуется.

Я также попытался добавить следующее в класс InvoiceCharges, но все еще не смог правильно сгенерировать прокси.

[KnownType(typeof(ListViewItem))]

Кроме того, это поведение прокси. Я использую Add Service Reference для этого.

enter image description here

Посмотрите, как он генерирует несколько "InvoiceCharges", все из-за этого ListViewItem Я могу удалить атрибут DataMember из него и его штраф.

1 Ответ

0 голосов
/ 23 февраля 2012

ListViewItem является концепцией пользовательского интерфейса и не имеет смысла в вашем коде бизнеса или услуги.Переосмыслите «данные» (модели), а не то, что видит пользователь, и переоборудуйте класс.

Ваша проблема связана с невозможностью сериализации.Если вы не хотите переписывать биты пользовательского интерфейса, чтобы сделать их более удобными для сериализации, переосмысление модели - ваш лучший выбор.

...