Asp.net core Asp.Net核心控制器-为什么不键入ObjectResult类?
以下方法编译得很好,我更希望这是一个编译错误:Asp.net core Asp.Net核心控制器-为什么不键入ObjectResult类?,asp.net-core,swagger,Asp.net Core,Swagger,以下方法编译得很好,我更希望这是一个编译错误: [HttpGet("some/route")] public ActionResult<string> GetSomething() { return Ok(23); } [HttpGet(“部分/路由”)] 公共行动结果GetSomething() { 返回Ok(23); } string和int是不兼容的,但这可以很好地编译。当使用Swagger(openapi
[HttpGet("some/route")]
public ActionResult<string> GetSomething()
{
return Ok(23);
}
[HttpGet(“部分/路由”)]
公共行动结果GetSomething()
{
返回Ok(23);
}
string
和int
是不兼容的,但这可以很好地编译。当使用Swagger(openapi)等工具时,它们会生成不正确的端点定义
我想知道为什么没有键入ObjectResult
类?此外,是否有解决这个问题的办法
编辑:
当swagger定义声明返回
字符串时,我试图避免出现错误,但实际上,您得到的是int
。如果int
s和string
s没有意义,那么想象两个随机的JSON对象DtoA
和DtoB
,据我所知,响应不包含int和string类型。响应主体的类型为text/plain、application/json或其他
因此,无需检查OkObjectResult
的ActionResultObjectValue
值中的int或字符串。通常情况下,将所有转换为字符串或字节作为
回应内容
此外,swagger将根据
ActionResult
的Tvalue类型
如果返回public ActionResult GetSomething()
,您将发现结果将转换为int
更新:
OkObjectResult继承ActionResult。返回的子类不会影响父类的编译。这是按设计的
ActionResult
允许您返回从ActionResult
派生的类型或返回特定类型
要强制执行编译错误,可以只返回int,它是一种特定类型。当您返回int
时,您可以看到错误消息
当我在OKObjectResult
中返回int
时,我试图避免错误,但方法定义声明它返回ActionResult
。如果int
s和string
s没有意义,那么用随机对象DtoA
和DtoB