如何在WCF中更改裸XML的最外层标记?

时间:2011-12-13 18:32:34

标签: c# wcf xml-serialization

我有一个使用WebInvoke的Web服务,我想更改正在返回的标记。

当前服务如下所示:

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

它返回如下所示的XML:

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

使用WCF,如何将发出的标记更改为&lt; ArrayOfDataObject&gt;和&lt; DataObject&gt;更通用的东西?

2 个答案:

答案 0 :(得分:2)

感谢Maess让我走上正轨。这就是我最终的结果:

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

        public DataResponse(List<T> list) : base()
        {
            this.AddRange(list);        
        }
    }

答案 1 :(得分:1)

您可以在DataObject本身使用序列化提示。这些将告知序列化程序如何呈现对象及其属性。

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