GetArgument <t>不解析

时间:2019-01-08 04:24:43

标签: c# asp.net-core-mvc graphql

我正在使用GetArgument<T>方法转换来自GraphQL查询的输入参数,其中T是输入类(InputSearchCriteriaClass)。在监视/调试器中看到参数时,它被错误地解析为类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的所有参数均为零。有什么建议可以正确解析输入类吗?

1 个答案:

答案 0 :(得分:0)

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

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