Json 参数转换继承 web api 2

Json parameter casting inheritance web api 2

我正在使用 MS Web API 2 接收来自我们使用 ajax 的网页的呼叫。 然后我有 2 类: subscriber 和 externalSubscriber。订阅者包含非常基本的数据,如名称和 ID。外部订阅者继承自订阅者并添加地址和电子邮件等基本数据。我有一个 api 方法来编辑这样定义的订阅者的数据:

public IHttpActionResult PutSubscriber(int id, Subscriber subscriber)

在我们的页面中,我使用提供的数据创建了一个 json 字符串,这导致它成为外部或普通订阅者。 我可以 post 使用这两个函数但是使用 externalSubscriber 对象添加的数据会丢失并且尝试从订阅者投射会导致错误。

我的问题是,是否有人对这个问题有任何经验,除了创建用于放置外部订阅者的特定函数之外,是否还有其他方法可以解决此问题。

我已经通过使用以下页面上提供的信息让它工作了: http://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm Polymorphism in Web API: Single endpoint possible?

首先我设置 json 设置:

jsonsettings.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;

然后在使用 ajax 使用

发送之前设置 json 对象的类型
jsonObject { '$type' : .Models.ExternalSubscriber, solution.project', ....}

在此之后,我可以将传入的订阅者转换为外部订阅者并访问其属性。