2016-04-21 8 views
1

Beim Versuch, eine generische Methode zum Aufrufen von REST-Endpunkten mithilfe von RestSharp zu erstellen, wird nur der Inhalt dynamisch zurückgegeben.Dynamisch wiederkehrende serialisierte RestSharp-Ergebnisse

Response.Data ist null und Response.Content ist immer eine Zeichenfolge. Ich möchte, dass der Rückgabewert mindestens anonym ist.

public T Call<T>(string url, Method method = Method.GET, ResponseType type = ResponseType.JSON, params Parameter[] parameters) 
{ 
    var request = new RestRequest(url, method); 

    switch (type) 
    { 
     case ResponseType.JSON: 
      request.AddHeader("Content-Type", "application/json"); 
      request.AddHeader("Accept", "application/json"); 
      request.RequestFormat = DataFormat.Json; 
      break; 
     case ResponseType.XML: 
      request.AddHeader("Content-Type", "application/xml"); 
      request.AddHeader("Accept", "application/xml"); 
      request.RequestFormat = DataFormat.Xml; 
      break; 
    } 

    foreach (var parameter in parameters) 
     request.AddParameter(parameter); 

    var response = _client.Execute<dynamic>(request); 

    if (!string.IsNullOrEmpty(response.ErrorMessage) || response.ErrorException != null) 
     throw new System.Exception(response.ErrorMessage, response.ErrorException); 

    return response.Data; 
} 

Antwort

0

Vorausgesetzt, dass Sie den Typ T haben, können Sie nicht tun:

var response = _client.Execute<T>(request); 
+0

Wird dynamisch nicht einen anonymen Typ wie schaffen, in dem Objekt nicht? – user3953989

+0

Meine schlechte, aktualisierte Antwort dort –

+0

sollte dies funktionieren, aber denken Sie daran, wo T: new() an das Ende der Methodensignatur hinzuzufügen. – Dan