Я использую graphql-do tnet ( do tnet GraphQl ) для реализации GraphQL в Do tNet Core 2.1. У меня есть следующие классы:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
public class CustomerInputType : InputObjectGraphType
{
public CustomerInputType()
{
Name = "CustomerInput";
Field<NonNullGraphType<IntGraphType>>(nameof(Customer.Id));
Field<NonNullGraphType<StringGraphType>>(nameof(Customer.Name));
}
}
public class CustomerOutputType : ObjectGraphType<Customer>
{
public CustomerOutputType()
{
Name = "Customer";
Field<NonNullGraphType<IntGraphType>>(nameof(Customer.Id));
Field<NonNullGraphType<StringGraphType>>(nameof(Customer.Name));
}
}
public class CustomerMutation : ICustomerMutation
{
public void Resolve(GraphQLMutation graphQLMutation)
{
graphQLMutation.FieldAsync<CustomerOutputType, Customer>
(
"createCustomer",
arguments: new QueryArguments
(
new QueryArgument<NonNullGraphType<CustomerInputType>> { Name = "customer"}
),
resolve: context =>
{
var customer = context.GetArgument<Customer>("customer");
return Task.FromResult(customer);
}
);
}
}
Вот входные данные, которые я посылаю этой мутации через GraphIQL:
mutation createCustomer
{
createCustomer(customer:{id: 19, name: "Me"})
{id name}
}
Вот входные данные внутри C# Код:
Часы показывают значение id, равное 0x00000013
вместо 19
.
Вот вывод в GraphIQL:
Мне нужно использовать значение 19
для дальнейшей обработки в хранилище, которое вводится в эту мутацию. Однако, когда я передаю объект Customer в хранилище, значение id в объекте Customer равно 0x00000013
, что приводит к сбою дальнейшей последующей обработки, поскольку ожидается 19
вместо 0x00000013
.
Почему значение объекта 0x00000013
внутри C# кода еще переводится в фактическое значение в GraphIQL? Как преобразовать значение Cusutomer.id в его правильное целочисленное значение для дальнейшей обработки, прежде чем мутация вернет результаты?