public override void OnBeforeCompleteType()

in src/Core/Services/ResolverTypeInterceptor.cs [40:97]


    public override void OnBeforeCompleteType(
        ITypeCompletionContext completionContext,
        DefinitionBase? definition,
        IDictionary<string, object?> contextData)
    {
        // We are only interested in object types here as only object types can have resolvers.
        if (definition is not ObjectTypeDefinition objectTypeDef)
        {
            return;
        }

        if (completionContext.IsQueryType ?? false)
        {
            foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
            {
                field.MiddlewareDefinitions.Add(_queryMiddleware);
            }
        }
        else if (completionContext.IsMutationType ?? false)
        {
            foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
            {
                field.MiddlewareDefinitions.Add(_mutationMiddleware);
            }
        }
        else if (completionContext.IsSubscriptionType ?? false)
        {
            throw new NotSupportedException();
        }
        else
        {
            foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
            {
                if (field.Type is not null &&
                    completionContext.TryGetType(field.Type, out IType? type))
                {
                    // Do not override a PureResolver when one is already set.
                    if (field.PureResolver is not null)
                    {
                        continue;
                    }

                    if (type.IsLeafType())
                    {
                        field.PureResolver = _leafFieldResolver;
                    }
                    else if (type.IsObjectType())
                    {
                        field.PureResolver = _objectFieldResolver;
                    }
                    else if (type.IsListType())
                    {
                        field.PureResolver = _listFieldResolver;
                    }
                }
            }
        }
    }