繁体   English   中英

是否可以在 ASP.NET MVC [FromBody] 控制器方法参数中使用多态?

[英]Is it possible to use polymorphism in and ASP.NET MVC [FromBody] controller method parameter?

问题标题可能有点难以理解,但我会尽力解释我在这里问的问题。

我在 ASP.NET MVC 控制器中有这种控制器方法:

public IActionResult DoStuff([FromBody] RequestObject reqObj)
{
  // do stuff
  ReplyObject repObj = ProcessObject(reqObj);
  // do more stuff
  return Json(repObj);
}

其中 RequestObject 看起来像这样:

public class RequestObject
{
  public string Field { get; set; }
}

我从这样的 Angular 服务中调用它:

this.http.post("/StuffController/DoStuff", { field: "field value goes here" })

现在这工作正常。 但是现在我需要 DoStuff() 来处理 RequestObj 的不同子类,例如:

public class RequestObjectA : RequestObject
{
  public string FieldA { get; set; }
}
public class RequestObjectB : RequestObject
{
  public string FieldB { get; set; }
}

并让 DoStuff() 以某种方式弄清楚它是被赋予了 RequestObjectA 还是 RequestObjectB。

这种事情可能吗? 我有一种感觉,不是因为 JSON 请求只传输对象的内容,而不是它的类,但我想确定。

简短的回答是,这是不可能的。 长答案是:端点参数的约定是RequestObject类,因此在反序列化期间也不会考虑其他参数成员,因为对它们一无所知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM