HotChocolate GraphQL是否不支持record struct?服务器正常IDE提示Schema不可用
我用record struct定义了Money类型,DemoQuery类的GetMoney方法返回该类型,服务器运行无报错,但Chilicream IDE提示“schema unavailable”;将record struct改为record或class后,代码可正常运行。
代码示例:
public record struct Money(long Cents); public class DemoQuery { public Money GetMoney() => new Money(1); }
临时解决方案
无需修改Money类型的情况下,可通过显式映射解决:
services.AddGraphQLServer() .BindRuntimeType<Money, LongType>() .AddTypeConverter<Money, long>(money => money.Cents) ...
HotChocolate不支持record struct/struct的原因
- HotChocolate默认优先适配引用类型(class/record),对值类型(struct/record struct)的元数据解析逻辑不同,自动类型发现机制无法自动推断其对应的GraphQL类型,导致IDE无法生成可用的schema。
- record struct属于值类型,继承了struct的特性,HotChocolate不会默认将其自动映射为GraphQL标量类型或复杂类型,必须显式指定类型绑定和转换器才能完成类型映射。
内容的提问来源于stack exchange,提问作者Xiaoguo Ge
相关产品推荐
相关产品推荐

