joh*_*y 5 4 c# asp.net-web-api valuetuple
我正在使用Web API。我有点懒,决定从控制器返回一个值元组。
[HttpGet]
[Route(AuthAPIRoutes.GET_MFA_DEVICES)]
public (string Type, string Value)[] GetMultiFactoryMethods()
{
return GlobalFactory<IPaystreamMFASecurityService>.Instance.GetMultiFactorMethods();
}
Run Code Online (Sandbox Code Playgroud)
JSON响应似乎没有使用适当的命名,这是否已被优化?
{
"item1": "Phone",
"item2": "1-512-555-0550"
}
Run Code Online (Sandbox Code Playgroud)
注意:我知道我可以明确创建一个模型来避免此问题。我想了解发生了什么,为什么响应中不尊重我的值元组名称?
什么是发生的是,ValueTuple作为一种类型(一组通用的类型,实际上)实际上是非常静态的,并具有命名属性的东西喜欢Item1,Item2等等。
从C#中获得的不错的语法,您可以在其中声明名称并在代码中的其他位置使用它,这只是C#语言的功能。通过名称引用这些值的已编译代码最终调用了那些静态属性(Item1例如)。实际上,您仍然可以通过自己的C#代码中的“项目”名称访问这些属性。
从编译代码的角度来看,关于这些元组上字段名称的唯一线索是与该方法相关联的属性,因此,除非ASP.NET将有关该操作方法的上下文信息传递给序列化程序,否则将无法序列化程序,以了解这些属性应该具有的名称。
请参阅本文,以深入了解ValueTuples在做什么。
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |