Как я могу изменить внешний тег голого XML в WCF? - PullRequest
1 голос
/ 13 декабря 2011

У меня есть веб-сервис, использующий WebInvoke, и я хочу изменить возвращаемые теги.

Текущий сервис выглядит так:

    [OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare,
               Method = "GET",
               RequestFormat = WebMessageFormat.Xml,
               ResponseFormat = WebMessageFormat.Xml,
               UriTemplate = "/")]
    List<DataObject> getCurrentData();

И он возвращает XML, который выглядит следующим образом:

  <ArrayOfDataObject xmlns="...">
    <DataObject>
       ...
    </DataObject>
    ...
  </ArrayOfDataObject>

Используя WCF, как я могу изменить теги, которые выводятся как и , на что-то более общее?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Спасибо Мейсс за то, что поставил меня на правильный путь.Вот что я закончил:

    [CollectionDataContract(ItemName="element", Name = "elementCollection")]
    public class DataResponse<T> : List<T>
    {
        public DataResponse() : base()
        {
        }

        public DataResponse(List<T> list) : base()
        {
            this.AddRange(list);        
        }
    }
1 голос
/ 13 декабря 2011

Вы можете использовать подсказки сериализации в самом DataObject. Они сообщат сериализатору, как визуализировать объекты и его свойства.

[XmlRoot("YourNewNameHere")]
public class DataObject
{
}
...