如何对一个抽象类进行反序列化,这个抽象类有许多具体的实现作为C#ApiController方法的输入传递
我有一个APIController,它的一个方法需要一个如何对一个抽象类进行反序列化,这个抽象类有许多具体的实现作为C#ApiController方法的输入传递,c#,json,serialization,asp.net-web-api,asp.net-apicontroller,C#,Json,Serialization,Asp.net Web Api,Asp.net Apicontroller,我有一个APIController,它的一个方法需要一个[FromBody]列表。AbstractEntity是一个抽象类,它由我们称它们为ConcreteEntity1和ConcreteEntity2来实现。C#.NET中的这种设置是如何实现反序列化的?在我的json中,一切都很好,但是APIController方法中传递了一个空的对象列表 下面是该方法的外观: [HttpPut] [Route("x/y/z")] public void SomeMethod([FromBody] List&
[FromBody]列表
。AbstractEntity是一个抽象类,它由我们称它们为ConcreteEntity1和ConcreteEntity2来实现。C#.NET中的这种设置是如何实现反序列化的?在我的json中,一切都很好,但是APIController方法中传递了一个空的对象列表
下面是该方法的外观:
[HttpPut]
[Route("x/y/z")]
public void SomeMethod([FromBody] List<AbstractEntity> entities) { ... }
我希望有一个简洁的解决方案,不涉及自定义反序列化
感谢您的帮助!谢谢确认一下,您正在使用,对吗?@dbc我想是这样的-我的控制器扩展了System.Web.Http.ApiController,它是一个没有视图的纯json输入/输出控制器回答您的问题吗?您也可以检查或寻找其他解决方案。@dbc所有这些都基于自定义json反序列化程序,对吗?我期待一个更简单的解决方案/配置。在问题中,请看第二个答案,它使用
typenameholling.Auto
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "nodeClass"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = ConcreteEntity1.class, name="Concrete1"),
@JsonSubTypes.Type(value = ConcreteEntity2.class, name="Concrete2"),
})
public abstract class AbstractEntity { ... }