我正在将一个项目更新到.NET 8,一些以前可序列化/可重新序列化的模型类现在引发了此错误:
类型"MyModel"上反序列化构造函数中的每个参数都必须绑定到反序列化上的对象属性或字段.每个参数名称必须与对象上的属性或字段匹配.仅当启用"JsonSerializerFields.IncludeFields"时,才会考虑字段.匹配可能不区分大小写.
我似乎能够停止异常的唯一方法是提供一个无参数构造函数,但我不想这样做.
更新
以下代码用于序列化/反序列化
void Main()
{
RunTests(); // Call RunTests() or press Alt+Shift+T to initiate testing.
}
public class MyClass
{
public int Number { get; set; }
public string Text { get; set; }
public MyClass(int num, string characters)
{
Number = num;
Text = characters;
}
// public MyClass() {} Test succeeds with parameterless ctor
}
[Fact] void Test_Xunit()
{
var mc = new MyClass(88, "foo");
var s = JsonSerializer.Serialize(mc);
var o = JsonSerializer.Deserialize<MyClass>(s);
}