如何在graphql dotnet中使用帕斯卡套管而不是骆驼套管

时间:2019-04-25 15:52:31

标签: graphql graphql-dotnet pascalcasing

这里我有一个突变,如您所见,当我从图形中执行此突变时,参数名称为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();
            }
        );


    }
}

2 个答案:

答案 0 :(得分:1)

您可以将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);
  }
}

答案 1 :(得分:0)

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

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

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