【发布时间】:2020-02-14 05:17:49
【问题描述】:
简短说明:
Angular 和 .NetCore 中的项目,我尝试在后端更新抽象类列表。
通过创建一个 put 请求,我更新了包含我要更新的列表的容器模型。
前端用JSON.stringify();序列化容器模型
当我的 put 请求到达我的端点时,它会立即开始反序列化。我得到了例外: System.NotSupportedException:不支持没有无参数构造函数的引用类型的反序列化。键入“平铺”。
这个异常并不让我吃惊,因为抽象类不能被实例化。所以我尝试使用自定义的 JsonConverter 来定义何时转换为哪个类。但是这个转换器永远不会被调用。我在 ReadJson 方法中放置了一个断点,但在到达断点之前抛出了异常。
Implementation of the abstract class
更新:
所以在继续几个小时后,我发现我的项目使用 System.Text.Json.Serialization 来序列化对象。我创建的 CostumConverter 是 Newtonsoft。这就是为什么它可能不被调用的原因。 有没有办法指定我的项目使用哪个? 我有一个 startup.cs 文件,我认为这样的东西可能会放在那里。
【问题讨论】:
-
是被调用的转换器方法上的
CanConvert吗? -
感谢您的快速回答。它没有被调用。
-
那么有两种选择:一,无论你的实际财产在哪里,都应用转换器;二,将转换器添加到您的反序列化配置中。 (默认一个或每个反序列化单独)
标签: c# json serialization .net-core abstract-class