【发布时间】:2020-12-26 04:50:33
【问题描述】:
我正在尝试使用ActionResult 在Controller 中发回abstract 类型的集合。我不知道如何告诉序列化程序还包括派生类型的特定属性:
public abstract class Base
{
public int Id{get;set;}
}
public class D1:Base
{
public string D1Value{get;set;}
}
public class D2:Base
{
public bool IsD2Value{get;set;}
}
public async Task<ActionResult<IEnumerable<Base>>> GetAll()
{
var collection=new []{ new D1 { Id=1, D1Value="hi"} ,new D2 {Id=2, IsD2Value=true}};
return StatusCode(200,collection);
}
我怎样才能以一种简单而优雅的方式达到这个结果。我已经检查了JsonSerializer 选项,但在我的情况下,我不是进行序列化的人。
我得到了什么
[{ "Id":1} , { "Id":2 }]
我想要什么
[{ "Id":1,"D1Value":"hi" } , { "Id":2 , "IsD2Value":true }]
【问题讨论】:
-
能否请您编辑您的结果,因为它们是相同的。
-
这是一个错字,我的错。
-
@BercoviciAdrian,你可以把
D1和D2放入List<object>,然后直接返回,我已经更新了我的答案,希望对你有帮助。
标签: asp.net-core serialization jsonserializer derived-types