C# 返回带有asp.net核心api错误的自定义对象

C# 返回带有asp.net核心api错误的自定义对象,c#,asp.net-core,C#,Asp.net Core,我使用的是asp.net core 2.1,在api中返回错误时,我需要模拟一些现有行为,其中响应包括自定义对象: return this.BadRequest( new ApiError { // The corresponding integer response code. Status = StatusCodes.Status400BadRequest, // The matching short text code.

我使用的是asp.net core 2.1,在api中返回错误时,我需要模拟一些现有行为,其中响应包括自定义对象:

return this.BadRequest(
    new ApiError
    {
        // The corresponding integer response code.
        Status = StatusCodes.Status400BadRequest,
        // The matching short text code.
        Code = "BadRequest",
        // A detailed context specific message.
        Message = "Some message"
    });
我的问题是,asp.net core带来了
Microsoft.AspNetCore.Http.StatusCodes
类,该类包含指示响应代码的整数字段,但是字段名不是我想公开的内容,例如
code=nameof(StatusCodes.Status400BadRequest)

在这种情况下,生成响应描述
BadRequest
的现代方法是什么

我可以使用
System.Net.HttpStatusCode.BadRequest
nameof(System.Net.HttpStatusCode.BadRequest)
,但这似乎忽略了较新的约定

我不想转换返回类型,控制器和动作签名已经定义得很好了。我想确保我正在使用一种简洁的方法来适应现有的消费者,他们希望对象具有所需的字段,如果可能的话,我希望这样做时不需要使用魔术字符串或多个不相关的类


我认为这个用例比没有更常见,并且有更复杂的工具来实现这一点?

当HTTP状态代码告诉您时,为什么有一个属性显示400个错误请求会很常见?您的意思还不完全清楚。
BadRequest
功能可适当设置状态代码和状态文本。微软转向
StatusCodes
的原因正是为了摆脱这种硬编码方式。现在每个人都想知道如何硬编码这样的东西:)。您也可以在
HttpStatusCode
上调用
ToString
。请参阅@CamiloTerevinto,上面的评论回答了您的第一个评论。我需要一个对象,而不是实现所描述的字段,这在语义上与响应代码不同。使用者代码中的处理程序利用对象的属性。我正在寻找一种简洁的方式来适应它。我没有试图将
HttpResponseMessage
转换为
IActionResult
,这是不相关的。@HereticMonkey我看得越多,我继续得出相同的结论。我将研究如何在消费代码中适应本机功能。