>假设我有 3 个类 A、B 和 C:
public class A{
}
public class B : A{
}
public class C : A{
}
在我的 API 中,我有:
[HttpPost]
public ActionResult Post([FromBody] A a)
{
var new_a = addToDb(a); // add a to the db...
return Created("", new_a);
}
在此示例中,addToDb(A a(表示使用具有多态行为的存储库模式向数据库添加值。
问题是 JSON 转换器不会根据输入将 A 转换为 B 或 C。 这个问题的最佳替代方案是什么? 我已经尝试为每个派生类添加多个专用函数,如下所示:
[HttpPost("/B")]
public ActionResult Post([FromBody] B a)
{
var new_a = addToDb(a); // add a to the db...
return Created("", new_a as B);
}
但是添加所有这些功能感觉不对。 有没有更好的选择?请帮忙
你可以试试
[HttpPost]
public ActionResult Post([FromBody] A a)
{
var new_a = addToDb(a); // add a to the db...
if (a.GetType() == typeof(B))
return Created("", (B)new_a);
else
return Created("", (C)new_a);
}