Сериализация массива WCF - ОТДЫХ - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть веб-сервис REST, который возвращает структуру, содержащую массив из дополнительных структур.Эта структура возврата выглядит следующим образом:

[DataContract]
public class Response {
  private ResponseRecord[] m_Record;

  [DataMember]
  public int TotalRecords { get; set; }

  [DataMember]
  public ResponseRecord[] Record {
    get { return m_Record; }
    set { m_Record = value; }
  }
}

Класс ResponseRecord выглядит следующим образом:

[DataContract(Name="Record")]
public class ResponseRecord {
  [DataMember(Order = 0)]
  public string RecordID { get; set; }
/* Many more objects */
}

Мой веб-сервис возвращает XML следующим образом:

<Response>
  <TotalRecords>1</TotalRecords>
  <Record>
    <ResponseRecord>
      <RecordID>1</RecordID>
      ... Many more objects ...
    </ResponseRecord>
  </Record>
</Response>

ЧтоЯ хотел бы избавиться от этого уровня иерархии ResponseRecord, так как он не добавляет никакой новой информации.Этот веб-сервис также работает для SOAP и XML, и атрибут (Name = "Record") сделал свое дело.Однако, по некоторым причинам это не так.Почему?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Прежде всего, я предлагаю вам изменить свойство Record на Records, поскольку записи действительно такие, какие есть.

Кроме того, если вы удалите ResponseRecord, не будет ничего, чтобы сгруппировать свойства каждого экземпляра ResponseRecord вместе. Так что это невозможно.

0 голосов
/ 28 февраля 2011

Оказывается, мой массив был настроен неправильно:

[DataContract]
public class Response {
  private ResponseRecord[] m_Record;

  [DataMember]
  public int TotalRecords { get; set; }

  [System.Xml.Serialization.XmlElementAttribute("Record")]   // <-- HERE
  public ResponseRecord[] Record {
    get { return m_Record; }
    set { m_Record = value; }
  }
}

Это убрало уровень ResponseRecord, который я и хотел уйти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...