新版本 .NET 6 在没有设置的情况下无法工作

New version .NET 6 is not work without get set

我的旧项目正在使用 .NET Core 2.2,我需要将其迁移到 .NET 6。

之前的开发者添加了一些 classes 是这样的:

public class ClassName
{
    public int code;
    public string message;
}

和API控制器

    [HttpGet]
    [Route("GetTotal")]
    public List<ClassName> GetTotal(DateTime dtCur)
    {
        List<ClassName> l = new List<ClassName>();

        ClassName n = new ClassName()
        {
                code = -99,
                message = "invalid session"
        };

        l.Add(n);

        return l;
    }

它适用于 .NET Core 2.2,但在 .NET 6 上,它总是 return 是来自 ajax 或 Postman 的空数组。

要在 .NET 6 中完成它,我必须像这样修复 class:

public class ClassName
{
    public int code { get; set; }
    public string message { get; set; }
}

但问题是旧项目中的所有 classes 他们没有将 { get; set; } 添加到任何 classes,这意味着我必须修复它们。

有什么方法可以快速修复它,或者有人可以解释为什么在 .NET 6 中 return 在这种情况下为空?

对于您的场景,您可以在 Program.cs 中全局启用字段序列化,如:

builder.Services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.IncludeFields = true;    
});