コード例 #1
0
        private void SetupQueryVisitorContextDefaults(IQueryVisitorContext context)
        {
            if (_config.DefaultAliasResolver != null && context.GetRootAliasResolver() == null)
            {
                context.SetRootAliasResolver(_config.DefaultAliasResolver);
            }

            if (_config.DefaultValidator != null && context.GetValidator() == null)
            {
                context.SetValidator(_config.DefaultValidator);
            }
        }
コード例 #2
0
        public static AliasResolver GetAliasResolver(this IQueryNode node, IQueryVisitorContext context)
        {
            object value = null;

            if (node.Data.TryGetValue(AliasResolverKey, out value))
            {
                return(value as AliasResolver);
            }

            if (node.Parent == null)
            {
                return(context.GetRootAliasResolver());
            }

            return(null);
        }
コード例 #3
0
        public override async Task <IQueryNode> AcceptAsync(IQueryNode node, IQueryVisitorContext context)
        {
            var rootResolver = context.GetRootAliasResolver();

            if (rootResolver != null)
            {
                if (node is GroupNode)
                {
                    node.SetAliasResolver(rootResolver);
                }
                else
                {
                    throw new InvalidOperationException("Node must be GroupNode.");
                }
            }

            await node.AcceptAsync(this, context).ConfigureAwait(false);

            return(node);
        }