Пример #1
0
        // Mutation should be null UNLESS adding a mutation at the schema level
        internal GraphQLFieldBuilder <TContext, TField> AddListFieldInternal <TArgs, TField>(string name, Func <TArgs, Expression <Func <TContext, TEntity, IEnumerable <TField> > > > exprFunc)
        {
            var field = GraphQLField.New(_schema, name, exprFunc, typeof(IEnumerable <TField>), _type);

            _type.OwnFields.Add(field);
            return(new GraphQLFieldBuilder <TContext, TField>(field));
        }
Пример #2
0
        // unsafe generic magic to create a GQLField instance
        private GraphQLField CreateGenericField(PropertyInfo prop)
        {
            // build selector expression, e.g.: (db, p) => p.Id
            var entityParam = Expression.Parameter(typeof(TEntity), "p");
            var memberExpr  = Expression.MakeMemberAccess(entityParam, prop);
            var lambda      = Expression.Lambda(memberExpr, GraphQLSchema <TContext> .DbParam, entityParam);

            // build args func wrapping selector expression, e.g. o => (db, p) => p.Id
            var objectParam = Expression.Parameter(typeof(object), "o");
            var argsExpr    = Expression.Lambda(Expression.Quote(lambda), objectParam);
            var exprFunc    = argsExpr.Compile();

            return(GraphQLField.New(_schema, prop.Name.ToCamelCase(), (Func <object, LambdaExpression>)exprFunc, prop.PropertyType, _type));
        }