2012-06-26 68 views
2

我对编码.NET真的很陌生。我一直在尝试创建一个休息Web服务。REST服务,使用ArrayOf前缀列表返回前缀

下面是代码:

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> 

希望有人能告诉我是什么我丢了。

编辑: 如果我改变了代码,所以我返回orderlist的OBJ而不仅仅是订单捂脸

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/> 

,并在列表中没有的元素,帮助仍然appricated

回答

0

设置Name和ItemName属性。见MSDN

+0

我已经试过了,仍然得到同样的输出 –

2

尝试使用Name property

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

我还只是得到一个ArrayOfData列表,也可能是在配置文件中的东西可能会引起这种不必要的行为呢? –