public class TestModel
{
private IEnumerable<string> _list;
private IEnumerable<string> _list2;
public IEnumerable<string> List
{
get { return _list; }
set { _list2 = value; }
}
public IEnumerable<string> List2
{
get { return _list2; }
set { _list2 = value; }
}
}
我知道它可能看起来很奇怪,它是 ofc,但在 C# 代码中,如果您为任何 List 或 List2 设置新值,您总是会将 List2 设置为新值。但是,如果您将其与 API 一起使用:API方法:
[HttpPost]
public IHttpActionResult Test(TestModel test)
{
return Ok(test);
}
请求 JSON:
{
"List":["asdas", "asdasd"],
"List2":["qwe", "qwe"],
}
您会收到这样的回复:
{
"list": null,
"list2": [
"asdas",
"asdasd",
"qwe",
"qwe"
]
}
我知道这不是正常情况,但我偶然发现,我很好奇当我使用只读 IEnumerable
列表时它是如何发生的,并且仍然将两个列表合并为一个 - 为什么? 我很确定它涉及序列化,但仍然无法猜测它是如何工作的。非常感谢任何能够解释这一点并满足我的好奇心的人。
public IEnumerable<string> List
{
get { return _list; }
set { _list = value; }
}
您正在使用
_list2
变量来设置属性
List
。这就是为什么
List
的值设置为
List2
。