public DynamicQuery(IScopedDependencyResolver resolver) { _resolver = resolver; Name = QueryOptions.Name; foreach (var dbSetProperty in QueryOptions.GetFields()) { var graphType = typeof(DynamicObjectGraphType <,>).MakeGenericType(typeof(TContext), dbSetProperty.Type); var listGraphType = typeof(ListGraphType <>).MakeGenericType(graphType); var genericFieldMethod = typeof(ObjectGraphType <object>) .GetMethods() .Single(mi => mi.Name == "Field" && mi.IsGenericMethod && mi.GetParameters().Length == 5); var fieldMethod = genericFieldMethod.MakeGenericMethod(listGraphType); var field = (FieldType)fieldMethod.Invoke(this, new object[] { dbSetProperty.FieldName, $"{dbSetProperty.FieldName} of type {dbSetProperty.TypeName}", new QueryArguments(GetDefaultArguments(QueryOptions.DefaultTake)), (Func <ResolveFieldContext <object>, object>)(resolveContext => { try { return(GetDataFromContext(dbSetProperty.Type, resolveContext, dbSetProperty)); } catch (GraphityException ex) { resolveContext.Errors.Add(new ExecutionError(ex.Message)); return(null); } }), null }); if (!string.IsNullOrEmpty(QueryOptions.GlobalAuthorisationPolicy) || !string.IsNullOrEmpty(dbSetProperty.AuthorisationPolicy)) { field.AuthorizeWith(dbSetProperty.AuthorisationPolicy ?? QueryOptions.GlobalAuthorisationPolicy); } } }
public ControlerCreatorComponent(AppFunc next, IScopedDependencyResolver dependencyResolver, Assembly controllersAssembly) { _next = next; DependencyResolver = dependencyResolver; ControllersAssembly = controllersAssembly; }
public DynamicSchema(IScopedDependencyResolver resolver) : base(resolver) { Query = resolver.Resolve <DynamicQuery <TContext> >(); }