.NET核心控制器继承

时间:2018-05-17 07:11:54

标签: json inheritance .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,或者第三个东西??

谢谢。

1 个答案:

答案 0 :(得分:0)

因此,在你的Startup.cs文件中使用JSonOptions来实现这个工作的方法:

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

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