2011-12-13 38 views
1

我有一个使用WebInvoke的Web服务,我想更改正在返回的标记。如何更改WCF中裸露XML的最外层标签?

目前的服务是这样的:

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

,并返回XML,看起来像这样:

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

使用WCF,我怎样才能改变这种状况正在发射为< ArrayOfDataObject标签>和< DataObject>更一般的东西?

回答

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

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

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

它看起来像XML序列化的提示数据对象的属性,里面的工作,但我无法弄清楚如何将其应用到<数据对象>标签本身。 – 2011-12-13 19:47:23