Beispiel #1
0
        private void CompleteAbstractTypeResolver(
            ICompletionContext context,
            ResolveAbstractType resolveAbstractType)
        {
            if (resolveAbstractType == null)
            {
                Func <ISchema> schemaResolver = context.GetSchemaResolver();

                // if there is no custom type resolver we will use this default
                // abstract type resolver.
                IReadOnlyCollection <ObjectType> types = null;
                _resolveAbstractType = (c, r) =>
                {
                    if (types == null)
                    {
                        ISchema schema = schemaResolver.Invoke();
                        types = schema.GetPossibleTypes(this);
                    }

                    foreach (ObjectType type in types)
                    {
                        if (type.IsOfType(c, r))
                        {
                            return(type);
                        }
                    }

                    return(null);
                };
            }
            else
            {
                _resolveAbstractType = resolveAbstractType;
            }
        }