繁体   English   中英

ReadAsAsync 转换自定义 class 返回 null 用于 .net 核心

[英]ReadAsAsync cast custom class return null for .net core

我有一个旧的 MVC 程序,转换为 .net 内核。 但我面临 ReadAsAsync() 铸造问题。 相同的代码适用于旧 MVC,但不适用于 .NET 核心。

我有一个用户 model:

public class User
{
    public int Id { get; set; }

    public string Username { get; set; }

    public string Password { get; set; }

    public int Status { get; set; }

    public string Address { get; set; }
}

我尝试使用以下代码来测试结果,以获取 wep api HttpResponseMessage:

string responseContent = await content.ReadAsStringAsync();

并成功返回以下用户数据:

{"id":1, "username":"howard","password":"xxxxx","status":1,"Address":null} 

当我使用下面的代码对用户 model 进行响应时,正在查找并返回用户 model。

//worked
var data = await content?.ReadAsAsync<User>();

在此处输入图像描述

但是,当我添加一个自定义 ApiResult class 时,它变得无法正常工作,并为 ApiResult class 中的“结果”属性返回 null。

//not work
var data = await content?.ReadAsAsync<ApiResult<User>>()

在此处输入图像描述

但它适用于旧 MVC:

在此处输入图像描述

我的 ApiResult class:

public class ApiResult
{
    public bool CustomizedisSuccess { get; set; }

    public string CustomizedErrorMsg { get; set; }

    public static ApiResult<T> Success<T>(T result = default(T))
    {
        return new ApiResult<T>
        {
            Result = result,
            CustomizedisSuccess = true,
            CustomizedErrorMsg = "Error"
        };
    }
}

public class ApiResult<T> : ApiResult
{
    public T Result { get; set; }
}

结果总是返回 null,正确地假设转换为用户 model。 相同的代码在以前的 MVC 中有效,但在 .NET 核心中无效。

将其反序列化为User (因为这就是 JSON 的内容),然后将其嵌入到ApiResult中。 看起来你已经有了一个辅助方法。

var user = await content?.ReadAsAsync<User>();
var data = ApiResult.Success(user);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM