You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用schema.graphql生成C#类型作为GraphQL.Client查询返回类型?

完全可行,有成熟方案实现
  • 核心思路:通过代码生成工具从你的schema.graphql文件自动生成对应C#强类型,直接用于GraphQL.Client的泛型查询方法中。

  • 具体实现步骤:

    1. 用GraphQL Code Generator生成C#类型
      这个工具支持从GraphQL Schema生成强类型C#代码,只需简单配置:

      • 安装必要的依赖包(比如@graphql-codegen/cli、@graphql-codegen/csharp等)
      • 编写配置文件(如codegen.yml),指定schema.graphql的路径、生成类的输出目录,以及字段命名规则(比如把GraphQL的camelCase映射为C#的PascalCase)
      • 运行生成命令,工具会自动生成包含所有Schema类型的C#类,其中就包含你需要的EndpointResponse这类查询返回类型。
    2. 结合GraphQL.Client使用生成的类型
      生成类型后,直接在SendQueryAsync<T>中传入对应的生成类型即可,示例代码:

      var gqlClient = new GraphQLHttpClient("你的GraphQL端点地址", new NewtonsoftJsonSerializer());
      var query = new GraphQLRequest
      {
          Query = @"
              query YourQueryName {
                  // 这里写你的查询字段,要和Schema定义匹配
              }
          "
      };
      var response = await gqlClient.SendQueryAsync<EndpointResponse>(query);
      // 直接访问强类型的返回数据
      var resultData = response.Data;
      
  • 注意事项

    • 当后端Schema更新时,需要重新运行生成命令更新C#类,保证类型一致性
    • 如果Schema中有自定义标量类型,要在生成配置中指定对应的C#类型(比如把GraphQL的DateTime标量映射为C#的DateTime)
    • 确保生成的类型字段和你编写的查询字段完全匹配,否则会出现反序列化失败的问题

内容的提问来源于stack exchange,提问作者MrIslandWind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:55:57