如何使用C++libgraphqlparser获得GraphQL FieldDefinition中定义的类型

How to get the type defined in a GraphQL FieldDefinition using the C++ libgraphqlparser?

本文关键字:定义 类型 FieldDefinition GraphQL 何使用 C++libgraphqlparser 获得      更新时间:2023-10-16

我正在使用Facebook的libgraphqlparser库与C++中的GraphQLAST进行交互。我正在尝试确定FieldDefinition的特定type,它可以是ListTypeNamedType等,使用以下代码:

bool isListType (FieldDefinition * fieldDef) {
if (ListType* lt = dynamic_cast<ListType*>(fieldDef->getType())) {
return true;
}
return false;
}

但是,fieldDef上存在以下错误:

the operand of a pointer dynamic_cast must be a pointer to a complete class type

有没有其他方法可以测试getType返回的特定类?

您可以定义一个AstVisitor子类,该子类覆盖visitNamedTypevisitListTypevisitNonNullType,并记录这三个方法中的哪一个首先被调用以进行类型检查。(请参见AstVisitor.h。(注意,ListTypeNonNullType包含其他类型!您也可以将处理每种类型的逻辑放在访问者中,如果可能的话,这可能会更方便。