2016-04-26 47 views
2

我創建了一個公開REST服務的WCF Web服務應用程序。我希望此服務返回一個帶有數據和狀態部分的通用響應(請參閱下面的HttpResponse類)。 HttpResponse具有數據成員,它是對象列表。根據執行哪個REST服務調用,我將使用不同類型的對象列表填充數據。WCF REST服務 - 無法返回對象列表

我遇到的問題是,如果Data成員是對象列表,則Web服務崩潰。如果它使它成爲一個特定的類,我會得到一個有效的迴應。

我該如何解決這個問題?

謝謝!

public class HttpStatus 
    { 
     public int StatusCode = (int)StatusCodeEnum.SUCCESS; 
     public string UserMessage = ""; 
     public string InternalMessage = ""; 
     public string LinkedList = ""; 

    } 

    public class HttpResponse 
    { 
     private List<object> _data { set; get; } 
     private HttpStatus _status { set; get; } 

     public HttpResponse() 
     { 
      _data = null; 
      _status = new HttpStatus(); 
     } 

     public List<object> Data 
     { 
      get 
      { 
       return _data; 
      } 
      set 
      { 
       if (value != null) _data = value; 
      } 
     } 

     public HttpStatus Status 
     { 
      get 
      { 
       return _status; 
      } 
      set 
      { 
       if (value != null) _status = value; 
      } 
     } 
    } 

     [WebInvoke(
      Method = "GET", 
      UriTemplate = "MyEntity", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Bare)] 
     [OperationContract] 
     HttpResponse GetAllEntities(); 



     public HttpResponse GetAllEntities() 
     { 
      // Create Response 
      HttpResponse response = new HttpResponse(); 

      try{ 
       // Set the data 
       response.Data = GetMyEntities(); 
       response.Status = 1; 
      } 
      catch(Exception ex) 
      { 
       Debug.WriteLine("Exception: "+ex.Message); 
       response.Status.StatusCode = (int)StatusCodeEnum.FAIL; 
       response.Status.InternalMessage = ex.Message; 
       response.Status.UserMessage = Constants.GENERIC_USER_ERROR; 
      } 
      return response; 
     } 
+0

可以使用泛型 – Nkosi

回答

1

你可以使用

public class HttpResponse<T> where T : class 
{ 
    private List<T> _data { set; get; } 
    private HttpStatus _status { set; get; } 

    public HttpResponse() 
    { 
     _data = null; 
     _status = new HttpStatus(); 
    } 

    public List<T> Data 
    { 
     get 
     { 
      return _data; 
     } 
     set 
     { 
      if (value != null) _data = value; 
     } 
    } 

    public HttpStatus Status 
    { 
     get 
     { 
      return _status; 
     } 
     set 
     { 
      if (value != null) _status = value; 
     } 
    } 
} 
+0

的作品就像一個魅力。看,我剛剛學到了一些東西! ;) 非常感謝! – dutchman711