как использовать оболочку паскаль вместо оболочки верблюда в graphql dotnet

здесь у меня есть мутация, как вы можете видеть, имя параметра - Product с заглавной P, а имя поля - CreateProduct с заглавной C, когда я выполняю эту мутацию из графического изображения, я должен написать имя поля на корпусе верблюда, а также имя параметра, есть ли способ настроить graphql-dotnet на уважение имен, написанных в коде?

 const string STR_Product = "Product";
    public Mutations(IProductService ProductService)
    {
        Name = "Mutation";
        Field<ProductType>(
            "CreateProduct",
            arguments: new QueryArguments(
                new QueryArgument<NonNullGraphType<ProductInputType>> { Name = STR_Product }),
            resolve: context =>
            {
                var ProductInput = context.GetArgument<ProductInput>(STR_Product);
                return ProductService.CreateAsync(ProductInput.Code, ProductInput.Name, ProductInput.Description);
                //return new ProductInputType();
            }
        );


    }
}

person Jose Manuel Ojeda    schedule 25.04.2019    source источник


Ответы (2)


Вы можете передать IFieldNameConverter ExecutionOptions. По умолчанию используется CamelCaseFieldNameConverter.

Некоторые особые соображения необходимы для типов самоанализа, поскольку они должны быть верблюжьими в соответствии со спецификацией GraphQL.

GraphQL.NET предоставляет CamelCaseFieldNameConverter, PascalCaseFieldNameConverter и DefaultFieldNameConverter. Вы также можете написать свой собственный.

person Joe McBride    schedule 25.04.2019

См. Ответ Джо МакБрайда выше, но вместо FieldNameConverter следует использовать NameConverter. Пример:

var json = schema.Execute(_ =>
    {
      _.NameConverter = new DefaultNameConverter(); //or PascalNameConverter, etc.
    });

(опубликовано как ответ, потому что я не могу комментировать)

person Tyler Cleveland    schedule 19.01.2021