6

Here is one of the methods from my wcf rest service:

    [OperationContract]
    [WebInvoke(UriTemplate = "getInvoices", Method = "POST", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
List<InvoiceRet> GetInvoices(GetInvoices getInvoices);

And it returns response in the next format:

<ArrayOfInvoiceRet>
  <InvoiceRet></InvoiceRet>
  <InvoiceRet></InvoiceRet>
  ...
  <InvoiceRet></InvoiceRet>
</ArrayOfInvoiceRet>

How to modify method to return the next response

<ListInvoice>
  <InvoiceRet></InvoiceRet>
  <InvoiceRet></InvoiceRet>
  ...
  <InvoiceRet></InvoiceRet>
</ListInvoice>
Yara
  • 4,441
  • 6
  • 42
  • 62

1 Answers1

10

You will need to implement custom collection derived from List<InvoiceRet> and mark it with CollectionDataContractAttribute:

[CollectionDataContract]
public class ListInvoice : List<InvoiceRet>
{ }

Use this collection as return type from your operation. Here is full description of using collections in data contracts.

Ladislav Mrnka
  • 360,892
  • 59
  • 660
  • 670
  • This technique is not working for me in WCF .net 4.5 and has the same behaviour as if it is List – hB0 Nov 13 '14 at 15:38