如何解决Asp.Net核心控制器-为什么未键入ObjectResult类?
以下方法可以正常编译,我宁愿这是一个编译错误:
[HttpGet("some/route")]
public ActionResult<string> GetSomething()
{
return Ok(23);
}
string
和int
不兼容,但这可以很好地编译。使用Swagger(Open API)之类的工具时,它们生成的端点定义不正确。
我想知道为什么没有输入ObjectResult
类?此外,是否有解决此问题的方法?
编辑:
我试图避免在招摇的定义声称返回string
时出现错误,但实际上却得到了int
。如果int
和string
没有意义,那么可以想象两个随机的JSON对象DtoA
和DtoB
。
解决方法
据我所知,响应不包含int和字符串类型。响应主体的类型为text / plain,application / json或其他。
因此,无需检查OkObjectResult
的{{1}}值中的int或字符串。通常,所有内容都将转换为字符串或字节
回复内容。
此外,大摇大摆还会根据
ActionResultObjectValue
的Tvalue类型。
如果返回ActionResult<Tvalue>
,则会发现结果将转换为public ActionResult<int> GetSomething()
。
更新:
OkObjectResult继承ActionResult。返回的子类不会影响父类的编译。这是设计使然。
int
使您可以返回源自ActionResult<T>
的类型或返回特定类型。
要强制执行编译错误,您可以返回int这是一种特定类型。当您返回ActionResult
时,您会看到错误消息出现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。