我正在使用网络 API。我有点懒,决定从我的控制器返回一个值元组。
[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"
}
NOTE:我知道我可以明确地制作一个模型来避免这个问题。我想了解发生了什么以及为什么我的值元组名称在响应中没有得到尊重?
正在发生的事情是ValueTuple https://learn.microsoft.com/en-us/dotnet/api/system.valuetuple?view=netframework-4.8作为一种类型(实际上是一组泛型类型)实际上是非常静态的,并且具有名为诸如Item1
, Item2
, etc.
从 C# 中获得的良好语法可以声明名称并在代码中的其他位置使用它,这只是 C# 语言的一个功能。按名称引用这些值的编译代码最终会调用这些静态属性(Item1
,例如)。事实上,您仍然可以在自己的 C# 代码中通过“Item”名称来访问这些属性。
从编译代码的角度来看,有关这些元组字段名称的唯一线索是与method,因此除非 ASP.NET 将有关操作方法的上下文信息传递到序列化程序中,否则序列化程序将无法知道这些属性应该具有什么名称。
See 本文 https://msdn.microsoft.com/en-us/magazine/mt493248.aspx深入了解 ValueTuples 在幕后所做的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)