首页 > 解决方案 > .NET Core 控制器继承

问题描述

我寻找了这个问题,尽管有人问了类似的问题,但我找不到答案。

所以我有一个问题。我有 2 节课:

public class Person {
public string name{ get; set; }
}

public class Doctor: Person{
public string specialization{ get; set; }
}

我有控制器:

[HttpPost]
...
public virtual IActionResult PostPerson([FromBody]Person person)
        { ... }

如果我这样发送 JSON,我该如何做到这一点:

{"specialization":"obgyn"}

我在控制器中获得 Doctor 对象?

我是否需要进行自定义绑定(是否有示例?但是我有更多这样的类(100ts),所以我不想专门为每个类都这样做)或在 Startup.cs 中设置 JsonOptions,还是第三个? ?

谢谢你。

标签: jsoninheritance.net-core

解决方案


所以让这个工作的方法是在你的 Startup.cs 文件中添加一个 JSonOptions:

opts.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All;

然后这会将 $type 属性添加到响应中,并且还会从传入的 Json 消息中读取 $type。不幸的是,我的客户希望改变,因为他不想通过该字段来识别班级,而是自定义另一个,所以这个解决方案不适合我,但我的答案仍然可以帮助某人


推荐阅读