WebAPI 2 未反序列化 POST 请求中 FromBody 对象的 List<string> 属性

WebAPI 2 not deserializing List<string> property of FromBody object in POST request

在我的一个 WebAPI 2 应用程序中,我在反序列化 FromBody 对象的 List<string> 属性 时遇到问题。 (该列表保持为空,而其他属性已正确反序列化。)

无论我做什么,如果我将 属性 更改为 string[],属性 似乎只能正确反序列化。对我来说不幸的是,属性 需要是 List<string>.

类型

根据 ,我应该能够反序列化为 List<T>,只要 T 不是 Interface

有没有人知道我可能做错了什么?

控制器:

public class ProjectsController : ApiController
{
    public IHttpActionResult Post([FromBody]Project project)
    {
        // Do stuff...
    }
}

项目对象class:

public class Project
{
    public string ID { get; set; }
    public string Title { get; set; }
    public string Details { get; set; }

    private List<string> _comments;
    public List<string> Comments 
    { 
        get
        {
            return _comments ?? new List<string>();
        }
        set
        {
            if (value != _comments)
                _comments = value;
        } 
    }

    public Project () { }

    // Other methods
}

请求JSON:

{
    "Title": "Test",
    "Details": "Test",
    "Comments":
    [
        "Comment1",
        "Comment2"
    ]
}

你试过了吗?

public class Project
{
    public List<string> Comments {get; set;}
    public Project () 
    { 
        Comments = new List<string>();
    }
    ...
}

感谢@vc74 和@s.m。 ,我设法将我的项目对象 class 更新为如下所示,使其按照我希望的方式工作:

public class Project
{
    public string ID { get; set; }
    public string Title { get; set; }
    public string Details { get; set; }

    private List<string> _comments = new List<string>();
    public List<string> Comments 
    { 
        get
        {
            return _comments;
        }
        set
        {
            if (value != _comments)
            {
                if (value == null)
                    _comments = new List<string>();
                else
                    _comments = value;
            }
        } 
    }

    public Project () { }

    // Other methods
}

而不是试图阻止从Comments获取一个null值,我不得不防止设置值到null.