Esempio n. 1
0
            protected override Expression VisitConstant(ConstantExpression node)
            {
                if (node.CheckNotNull(nameof(node)).Value.AsQueryableResourceTypeOrNull() is Type resourceType)
                {
                    var typeInfo = _typeInfoProvider.GetTypeInfo(resourceType);
                    var queryableResourceDescriptor = new QueryableResourceDescriptor(typeInfo);
                    return(new ConstantExpression(queryableResourceDescriptor));
                }

                if (node.Value is ConstantQueryArgument constantQueryArgument)
                {
                    var copy = new DynamicObject(constantQueryArgument.Value);
                    foreach (var property in copy.Properties.AsEmptyIfNull())
                    {
                        if (property.Value.AsQueryableResourceTypeOrNull() is Type resourceTypePropertyValue)
                        {
                            var typeInfo = _typeInfoProvider.GetTypeInfo(resourceTypePropertyValue);
                            var queryableResourceDescriptor = new QueryableResourceDescriptor(typeInfo);
                            property.Value = queryableResourceDescriptor;
                        }
                    }

                    return(new ConstantExpression(new ConstantQueryArgument(copy), node.Type));
                }

                if (node.Value is CancellationToken)
                {
                    var substitutionValue = new SubstitutionValue(node.Type);
                    return(new ConstantExpression(substitutionValue, node.Type));
                }

                return(base.VisitConstant(node));
            }
Esempio n. 2
0
        public string ValueAsString()
        {
            if (!IsEnabled || SubstitutionValue == null)
            {
                return(string.Empty);
            }

            return(SubstitutionValue.ToString());
        }