Динамический возврат сериализованных результатов RestSharp

Пытаясь создать общий метод для вызова конечных точек REST с помощью RestSharp, единственная проблема, с которой я столкнулся, — это возврат содержимого как динамического.

Response.Data имеет значение null, а Response.Content всегда является строкой. Я хотел бы, чтобы возвращаемое значение было как минимум анонимным типом.

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;
}

person user3953989    schedule 21.04.2016    source источник


Ответы (1)


Учитывая, что у вас тип Т, можете ли вы не делать:

var response = _client.Execute<T>(request);
person John Mc    schedule 21.04.2016
comment
Не будет ли динамически создаваться анонимные типы, в отличие от Object? - person user3953989; 21.04.2016
comment
это должно работать, но не забудьте добавить where T : new() в конец сигнатуры метода. - person Dan; 13.11.2016