首页 > 解决方案 > 获取参数不解析

问题描述

我正在使用GetArgument<T>方法来转换来自 GraphQL 查询的输入参数,其中 T 是输入类 ( InputSearchCriteriaClass)。虽然我在监视/调试器中看到参数,但它被错误地解析为 class T

输入类:

public class InputSearchCriteriaClass
{
  public InputSearchCriteriaClass()
  {
    carrierGases = new List<int>();
  }
  public List<int> carrierGases { get; set; }
}

我正在为此类使用以下相应类型:

public class SearchCriteriaInputType: InputObjectGraphType<InputSearchCriteriaClass>
{
  public SearchCriteriaInputType()
  {
    Name = "inputSearch";
    Field(x => x.carrierGases, type: typeof(ListGraphType<IntGraphType>)).Description("List of available carrier gases");
   }
}

以下代码用于处理查询:

Field<IntGraphType>("getInstrumentsCount",
 arguments: new QueryArguments(new QueryArgument<SearchCriteriaInputType>
 {
   Name = "inputSearch",
   Description = "text"
 }),
 resolve: _ =>
 {
   var id = _.GetArgument<SearchCriteriaInputType>("inputSearch");
   return 1;
  });

我正在尝试执行以下查询:

query
{
 getInstrumentsCount(inputSearch: {
  carrierGases:[1, 2],
 })
}

解析器中的那个id参数全部为零。有什么建议如何正确解析输入类?

标签: c#asp.net-core-mvcgraphql

解决方案


通常,它工作的唯一方法是通过解析器中的 JObject:

JObject obj = JObject.FromObject(_.Arguments["inputSearch"]);
var o = obj.ToObject<InputSearchCriteriaClass>();

推荐阅读