Do tNet Значение параметра приведения GraphQL к целому числу - PullRequest
0 голосов
/ 16 января 2020

Я использую 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# Код:

enter image description here

Часы показывают значение id, равное 0x00000013 вместо 19.

Вот вывод в GraphIQL:

enter image description here

Мне нужно использовать значение 19 для дальнейшей обработки в хранилище, которое вводится в эту мутацию. Однако, когда я передаю объект Customer в хранилище, значение id в объекте Customer равно 0x00000013, что приводит к сбою дальнейшей последующей обработки, поскольку ожидается 19 вместо 0x00000013.

Почему значение объекта 0x00000013 внутри C# кода еще переводится в фактическое значение в GraphIQL? Как преобразовать значение Cusutomer.id в его правильное целочисленное значение для дальнейшей обработки, прежде чем мутация вернет результаты?

1 Ответ

1 голос
/ 16 января 2020

Это правильно, значение отображается как шестнадцатеричное. Твой инспектор сбивает тебя с толку. 13 шестнадцатеричное как двоичное это

10011

И это десятичное число

19

https://www.rapidtables.com/convert/number/hex-to-decimal.html

...