2012-02-22 6 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; } 
    } 

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

EDIT

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

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

[KnownType(typeof(ListViewItem))] 

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

enter image description here

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

+0

Имеет ли класс Divings атрибут DataContract на нем? –

+0

Да, странно то, что когда я удаляю атрибут [DataMember] из пользовательских объектов (таких как свойство ListViewItem и свойство Division), с которыми он сталкивается. Класс создает прокси-сервер успешно на стороне клиента. – meanbunny

+0

Ну, я предполагаю, что ListViewItem не отмечен атрибутом DataContract, так что это может быть проблемой. Не уверен в классе Divisions, так как вы не опубликовали код. –

ответ

0

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

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

Смежные вопросы