如何在 graphql dotnet 中使用 Pascal 大小写而不是骆驼大小写

how to use pascal casing instead of camel casing in graphql dotnet

这里我有一个突变,你可以看到参数名称是 Product,大写 P,字段名称是 CreateProduct,大写 C 当我从图形执行这个突变时,我必须在 camel 上写字段的名称外壳和参数名称,有没有办法配置 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();
            }
        );


    }
}

您可以将 IFieldNameConverter 传递给 ExecutionOptions。它默认使用 CamelCaseFieldNameConverter.

内省类型需要一些特殊注意事项,因为根据 GraphQL 规范,这些类型需要采用驼峰式大小写。

GraphQL.NET 提供 CamelCaseFieldNameConverterPascalCaseFieldNameConverterDefaultFieldNameConverter。你也可以自己写。 Source found here.

using System;
using GraphQL;
using GraphQL.Types;

public class Program
{
  public static void Main(string[] args)
  {
    var schema = Schema.For(@"
      type Query {
        Hello: String
      }
    ");

    var json = schema.Execute(_ =>
    {
      _.Query = "{ Hello }";
      _.Root = new { Hello = "Hello World!" };
      _.FieldNameConverter = new DefaultFieldNameConverter();
    });

    Console.WriteLine(json);
  }
}

请参阅 Joe McBride 的上述回答,但应该使用“NameConverter”而不是“FieldNameConverter”。示例:

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

(作为答案发布,因为我无法发表评论)