2012-06-26 111 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列表,也可能是在配置文件中的東西可能會引起這種不必要的行爲呢? –