值元组从 WebAPI 公开错误的参数名称
Value tuples expose wrong parameter name from WebAPI
我正在使用网络 api。我有点懒惰,决定 return 来自我的控制器的值元组。
[HttpGet]
[Route(AuthAPIRoutes.GET_MFA_DEVICES)]
public (string Type, string Value)[] GetMultiFactoryMethods()
{
return GlobalFactory<IPaystreamMFASecurityService>.Instance.GetMultiFactorMethods();
}
JSON 响应似乎没有使用适当的命名是否正在优化?
{
"item1": "Phone",
"item2": "1-512-555-0550"
}
注意:我知道我可以明确地制作一个模型来避免这个问题。我想了解发生了什么,为什么我的值元组名称没有在响应中得到尊重?
发生的事情是 ValueTuple
作为一种类型(实际上是一组通用类型)实际上是非常静态的,并且具有类似 Item1
、Item2
的属性等等
您从 C# 获得的漂亮语法,您可以在其中声明一个名称并在代码的其他地方使用它,这只是 C# 语言的一项功能。通过名称引用这些值的编译代码最终会调用这些静态属性(例如 Item1
)。事实上,您仍然可以在自己的 C# 代码中通过 "Item" 名称访问这些属性。
从编译代码的角度来看,关于这些元组字段名称的唯一线索是与 方法 关联的属性,因此除非 ASP.NET将有关操作方法的上下文信息传递给序列化程序,序列化程序将无法知道这些属性应该具有什么名称。
请参阅 this article 了解 in-depth ValueTuples 在幕后所做的工作。
我正在使用网络 api。我有点懒惰,决定 return 来自我的控制器的值元组。
[HttpGet]
[Route(AuthAPIRoutes.GET_MFA_DEVICES)]
public (string Type, string Value)[] GetMultiFactoryMethods()
{
return GlobalFactory<IPaystreamMFASecurityService>.Instance.GetMultiFactorMethods();
}
JSON 响应似乎没有使用适当的命名是否正在优化?
{
"item1": "Phone",
"item2": "1-512-555-0550"
}
注意:我知道我可以明确地制作一个模型来避免这个问题。我想了解发生了什么,为什么我的值元组名称没有在响应中得到尊重?
发生的事情是 ValueTuple
作为一种类型(实际上是一组通用类型)实际上是非常静态的,并且具有类似 Item1
、Item2
的属性等等
您从 C# 获得的漂亮语法,您可以在其中声明一个名称并在代码的其他地方使用它,这只是 C# 语言的一项功能。通过名称引用这些值的编译代码最终会调用这些静态属性(例如 Item1
)。事实上,您仍然可以在自己的 C# 代码中通过 "Item" 名称访问这些属性。
从编译代码的角度来看,关于这些元组字段名称的唯一线索是与 方法 关联的属性,因此除非 ASP.NET将有关操作方法的上下文信息传递给序列化程序,序列化程序将无法知道这些属性应该具有什么名称。
请参阅 this article 了解 in-depth ValueTuples 在幕后所做的工作。