2011-12-13 35 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