2016-08-17 62 views
2

我已經使用ServiceStack創建了一個客戶服務,但我無法從該方法傳遞一個對象列表。在ServiceStack中傳遞對象列表

客戶服務 -

public class EntityService : Service 
    { 
     /// <summary> 
     /// Request for entity information list 
     /// </summary> 
     /// <param name="request"></param> 
     /// <returns></returns> 
     public object Any(List<CustomerRequest> request) 
     { 

     } 

} 

請求DTO -

[Route("/api/V1/GetCustomerDetails", Verbs = "POST", Notes = "")] 
    public class CustomerRequest : IReturn<List<CustomerResponse>> 
     { 
      [ApiMember(Name = "GetCustomerDetails", Description = "GetCustomerDetails", ParameterType = "body", DataType = "List<BaseRequest>", IsRequired = true)] 
      List<BaseRequest> _baseRequest {get;set;} 
     } 

public class BaseRequest 
{ 
      public string CustId { get; set; } 

      public string CustName { get; set; }  

      public string CustAddress { get; set; } 
} 

可否請你讓我知道什麼是通過在ServiceStack後操作對象的列表中選擇正確的方式。

回答

4

ServiceStack中的每個服務都需要接受一個具名的具體請求DTO類型。您可以查看AutoBatched Requests瞭解如何發送多個請求。

例如,如果你想一個服務接受類型的列表,你可以繼承List<T>,如:

public class CustomerRequests : List<CustomerRequest>{} 

public class EntityService : Service 
{ 
    public object Any(CustomerRequests request) 
    { 

    } 
} 
+0

我已經更新了我的問題與BaseRequest class.So可以請證實這是否是正確的執行方式? – Dev

+0

@intelliCoder沒有所有的屬性應該是公開的,你不應該暴露在你的公共API中以'_'開頭的名字,因爲擁有'_baseRequest'屬性意味着你的服務期望JSON像'{「_baseRequest」:[{「CustId 「:1},{」CustId「:2}]}'這很醜陋。 – mythz

+2

@intelliCoder查看ServiceStack文檔中的[Designing APIs section](https://github.com/ServiceStack/ServiceStack/wiki#documentation),它介紹了使用ServiceStack創建服務的示例。 – mythz