REST服务,List返回ArrayOf前缀

时间:2012-06-26 13:01:11

标签: c# .net wcf

我对编码.NET真的很陌生。我一直在努力创建一个休息网络服务。

以下是代码:

namespace RestService
{
    [ServiceContract]
    public class RestServiceImpl
    {
        [OperationContract]
        [WebInvoke(Method = "GET", UriTemplate = "foo")]
        List<Data> test()
        {
            OrderList ol = new OrderList();
            List<Data> comments = new List<Data>();
            comments.Add(new Data { Name = "sdf" });
            comments.Add(new Data { Name = "sdf" });
            ol.Order = comments;
            return ol.Order;
        }

       [CollectionDataContract]
       public class OrderList: List<Data>
       {
           [DataMember]
           public List<Data> Order{ get; set; }
       }

       [DataContract(Name = "Data")]
       public class Data
       {
           [DataMember]
           public string Name;
       }
   }
}

这是我得到的输出

<ArrayOfData>
    <Data>
        <Name>sdf</Name>
    </Data>
    <Data>
        <Name>sdf</Name>
    </Data>
</ArrayOfData>

我期待得到的是

<OrderList>
    <Data>
        <Name>sdf</Name>
    </Data>
    <Data>
        <Name>sdf</Name>
    </Data>
</OrderList>

希望有人能告诉我我失踪了什么。

编辑: 如果我更改代码,那么我将返回订单列表obj而不仅仅是订单 facepalm

  OrderList test()
  {
        OrderList ol = new OrderList();
        List<Data> comments = new List<Data>();
        comments.Add(new Data { Name = "sdf" });
        comments.Add(new Data { Name = "sdf" });
        ol.Order = comments;
        return ol;
   }

[CollectionDataContract (Name = "OrderList")]
    public class OrderList: List<Data>
    {

       [DataMember]
       public List<Data> Order{ get; set; }

    }

它仍然没有给我我所期待的东西 它只是提供以下内容:

<OrderList/>

并且列表中没有元素,帮助仍然是适用的

2 个答案:

答案 0 :(得分:2)

尝试使用Name property

   [CollectionDataContract(Name="OrderList")]
   public class OrderList: List<Data>

答案 1 :(得分:0)

设置Name和ItemName属性。请参阅MSDN