我有一个APIController,其中一个方法期望[FromBody] List<AbstractEntity>
。 AbstractEntity是一个抽象类,它通过调用ConcreteEntity1和ConcreteEntity2来实现。如何在C#.NET中进行此设置以便反序列化工作?在我的json中,一切都很好但是在APIController方法中传递了一个空的对象列表。
以下是该方法的外观:
[HttpPut]
[Route("x/y/z")]
public void SomeMethod([FromBody] List<AbstractEntity> entities) { ... }
在Java Spring中,这是我过去设置它的方式: 我在每个正在检查的具体实现中都有一个变量nodeClass,因此在反序列化期间选择了正确的类。在抽象实体中,我将这些注释放在类的顶部:
@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 { ... }
我希望有一个简洁的解决方案,不涉及自定义反序列化器..
任何帮助表示赞赏!感谢