Asp.net core 如何使用ActionResult发送抽象类型集合
我试图使用Asp.net core 如何使用ActionResult发送抽象类型集合,asp.net-core,serialization,jsonserializer,derived-types,Asp.net Core,Serialization,Jsonserializer,Derived Types,我试图使用ActionResult在控制器中发回抽象类型的集合。我不知道如何告诉序列化程序也包括派生类型特定的属性: 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 as
ActionResult
在控制器中发回抽象类型的集合。我不知道如何告诉序列化程序也包括派生类型特定的属性:
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);
}
我想要什么
[{ "Id":1} , { "Id":2 }]
[{ "Id":1,"D1Value":"hi" } , { "Id":2 , "IsD2Value":true }]
请尝试以下代码:
public async Task<ActionResult<IEnumerable<Base>>> GetAll()
{
var collection = new List<object>()
{
new D1 { Id = 1, D1Value = "hi" },
new D2 { Id = 2, IsD2Value = true }
};
return StatusCode(200, collection);
}
公共异步任务请尝试以下代码:
public async Task<ActionResult<IEnumerable<Base>>> GetAll()
{
var collection = new List<object>()
{
new D1 { Id = 1, D1Value = "hi" },
new D2 { Id = 2, IsD2Value = true }
};
return StatusCode(200, collection);
}
public async Task你能编辑你的结果吗,因为它们都是一样的。这是一个打字错误,我的错。@BercoviciAdrian,你可以把D1
和D2
放入列表
,然后直接返回,我已经更新了我的答案,希望它能帮助你。你能编辑你的结果吗,因为它们都是一样的。这是一个打字错误,我的错。@BercoviciAdrian,你可以将D1
和D2
放入列表
,然后直接返回,我已经更新了我的答案,希望它能帮助你。我已经检查了JsonSerializer选项,但在我的情况下,我不是进行序列化的人。
@RafiHenig,好的,只要删除JsonConvert.SerializeObject并直接返回List,我已经更新了我的答案。“我已经检查了JsonSerializer选项,但在我的情况下,我不是进行序列化的人。”
@RafiHenig,好的,只要删除JsonConvert.SerializeObject并直接返回List
,我已经更新了我的答案。