我正在尝试将一个对象添加到我的 GraphQL.NET 模型中,但其中一个字段有问题。原来的类是
public class ShowCriterion
{
public string RelatedEntity { get; set; }
public object MatchValue { get; set; }
}
这需要一个物化路径(如Person.Address.ZipCode
),并将其与MatchValue
. 问题是,MatchValue
可能有很多不同的东西:布尔值、整数、字符串、列表/数组、日期时间等。
我的第一次尝试是创建 GraphQL 类,如下所示:
public partial class ShowCriterionQL : ObjectGraphType<ShowCriterion>
{
public ShowCriterionQL()
{
Field(x => x.RelatedEntity, type: typeof(StringGraphType));
Field(x => x.MatchValue, type: typeof(ObjectGraphType));
}
}
但它给出了以下错误:
GraphQL.Validation.ValidationError: Field matchValue of type ObjectGraphType must have a sub selection
如果我将其设置为 a StringGraphType
,它将正确转换一些值(例如,布尔真变为“真”),但我真的不喜欢这种解决方案,因为它需要在客户端进行特殊处理。我还没有探索所有可能的类型以查看数组或 DateTime 会发生什么。
有什么方法可以在 GraphQL.NET 中做到这一点?
(在搜索中,我发现了几个处理类型参数的资源,但这对我正在做的事情并没有真正的帮助,因为我使用通用对象并在运行时使用反射来确定如何处理特定值。我还发现这个悬而未决的问题非常相似......但遗憾的是没有答案。)