Exemplo n.º 1
0
        protected virtual ISelectionVisitorAction VisitChildren(
            IOutputField field,
            TContext context)
        {
            IOutputType      type         = field.Type;
            SelectionSetNode?selectionSet =
                context.SelectionSetNodes.Peek();

            INamedType namedType = type.NamedType();

            if (namedType.IsAbstractType())
            {
                IReadOnlyList <ObjectType> possibleTypes =
                    context.Context.Schema.GetPossibleTypes(field.Type.NamedType());

                foreach (var possibleType in possibleTypes)
                {
                    ISelectionVisitorAction result =
                        VisitObjectType(field, possibleType, selectionSet, context);

                    if (result != Continue)
                    {
                        return(result);
                    }
                }
            }
            else if (namedType is ObjectType a)
            {
                return(VisitObjectType(field, a, selectionSet, context));
            }

            return(DefaultAction);
        }
Exemplo n.º 2
0
 private IEnumerable <IType> GetPossibleTypes(ISchema schema, INamedType type)
 {
     if (type.IsAbstractType())
     {
         return(schema.GetPossibleTypes(type));
     }
     return(null);
 }