。net核心API C#中具有1个属性的[FromBody]对象的解构

问题描述 投票:0回答:1

我刚刚将项目转换为.net core,更改之一是我现在只能将1 [FromBody]属性传递给控制器​​操作。以前我是像这样将JSON对象传递到主体中的:

{
    property1: 1,
    property2: 2
}

并且可以在控制器中接收到这两个属性,如下所示:

public doSomething([FromBody]int property1, [FromBody]int property2)

现在我必须为通过主体传递的参数创建一个新类:

public class DoSomethingParams {
    public int property1;
    public int property2;
}

public doSomething([FromBody]DoSomethingParams bodyParams)

这会创建更多代码,尤其是当我必须传递10个或更多参数进行调用时,这对我来说效率很低。

在Javascript中有一些解构操作,我可以使用一个上述对象,如下所示:let property1 = {property1};。 C#中有类似的替代方法吗?我读到有关tuple deconstructing in C# v7的信息,但我不太确定它是否对我有帮助(例如,将[FromBody](int property1, int property2)作为参数添加不起作用。(标识符预期错误))

除了为其创建类骨架之外,还有更有效的方法来解构我要传递的JSON对象吗?感谢您的帮助!

c# asp.net-core destructuring
1个回答
0
投票

您需要创建一个自定义模型提供程序来实现。检查此程序包是否仅执行以下操作:https://github.com/m6t/M6T.Core.TupleModelBinder

您只需要在第一个位置将自定义活页夹添加到活页夹提供程序中:

services.AddMvc(options =>
  {
      options.ModelBinderProviders.Insert(0, new TupleModelBinderProvider());
  })

然后您将可以使用元组解构:

public doSomething((int property1, int property2, string other) bodyParams) {
  // bodyParams.property1
  // bodyParams.property2
  // bodyParams.other
}
© www.soinside.com 2019 - 2024. All rights reserved.