处理 .NET Core 中的多态性的最佳做法



>假设我有 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);            
}

最新更新