这里我有一个突变,如您所见,当我从图形中执行此突变时,参数名称为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();
}
);
}
}
答案 0 :(得分:1)
您可以将IFieldNameConverter
传递给ExecutionOptions
。默认使用CamelCaseFieldNameConverter
。
内省类型需要一些特殊的注意事项,因为根据GraphQL规范,它们必须是驼峰式情况。
GraphQL.NET提供CamelCaseFieldNameConverter
,PascalCaseFieldNameConverter
和DefaultFieldNameConverter
。您也可以编写自己的。 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.
});
(作为答案发布,因为我无法发表评论)