如何将从 api 传递的对象转换回该项目的 class?

How do I convert an object passed from an api back to that item's class?

在我的 api 中,我有一个 class,其中包含一些字段,其中包括一个对象类型。我将另一个 class 的对象插入该字段。然后我return整个class回程序调用api。在该程序中,我可以将整个结果转换为原来的 class,但我无法将对象字段转换回原来的 class。我错过了什么?

API

public class APIResponse
{
    public int statusCode { get; set; }
    public string errorMessage { get; set; }
    public object returnObject { get; set; }
}

[HttpPost("CompleteCustomFilterOrder")]
[Produces("application/json", Type = typeof(APIResponse))]
public APIResponse GetItem
{
    ItemDTO item = new ItemDTO();
    item.ID = 12345
    item.Name = "Widget";
    item.Status = "Active";

    APIResponse response = new APIResponse();
    response.statusCode = 98765;
    response.errorMessage = "Success!";
    response.returnObject = item;

    return response;
}

程序调用API

        var client = new RestClient(url + "GetItem");
        var request = new RestRequest(Method.GET);
        var apiResponse = client.Execute<APIResponse>(request);
        APIResponse response = apiResponse.Data;

        ItemDTO item = (ItemDTO)response.returnObject;

响应正确转换回 class,但项目抛出错误

Unable to cast object of type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 'ProjectName.BusinessLogicLayer.Classes.ItemDTO'.

两个程序中的 ItemDTO class 除了命名空间外是相同的。

您正在接收 JSON 对象作为响应,因此直接转换将不起作用。您需要使用例如反序列化此对象。来自 Newtonsoft.Json 的 JsonConvert。 顺便提一句。您是否考虑过将 APIResponse 设为通用 class ?

public class APIResponse<T> where T: class
{
    public int statusCode { get; set; }
    public string errorMessage { get; set; }
    public T returnObject { get; set; }
}