ส่งคืนผลลัพธ์ 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)


เนื่องจากคุณมีประเภท T คุณไม่สามารถทำ:

var response = _client.Execute<T>(request);
person John Mc    schedule 21.04.2016
comment
ไดนามิกจะไม่สร้างประเภทที่ไม่ระบุตัวตนตามที่ Object จะไม่ทำใช่หรือไม่ - person user3953989; 21.04.2016
comment
สิ่งนี้ควรจะใช้ได้ แต่อย่าลืมเพิ่มโดยที่ T : new() ต่อท้ายลายเซ็นเมธอด - person Dan; 13.11.2016