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)); }
public string ValueAsString() { if (!IsEnabled || SubstitutionValue == null) { return(string.Empty); } return(SubstitutionValue.ToString()); }