GetArgument <T>не разбирает - PullRequest
0 голосов
/ 08 января 2019

Я использую метод GetArgument<T> для преобразования входных аргументов из запроса GraphQL, где T - это входной класс (InputSearchCriteriaClass). Хотя я вижу аргументы в watch / debugger, он неправильно разбирается на класс 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 голосов
/ 08 января 2019

Как правило, он работает только через JObject в резольвере:

JObject obj = JObject.FromObject(_.Arguments["inputSearch"]);
var o = obj.ToObject<InputSearchCriteriaClass>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...