protected override ConstantExpression VisitConstant(ConstantExpression node) { var queryable = node.CheckNotNull(nameof(node)).Value.AsQueryableOrNull(); if (queryable != null) { var typeInfo = _typeInfoProvider.GetTypeInfo(queryable.ElementType); var queryableResourceDescriptor = new QueryableResourceDescriptor(typeInfo); return(new ConstantExpression(queryableResourceDescriptor)); } if (node.Value is ConstantQueryArgument constantQueryArgument) { var newConstantQueryArgument = new ConstantQueryArgument(constantQueryArgument); var properties = newConstantQueryArgument.Properties ?? Enumerable.Empty <Property>(); foreach (var property in properties) { var value = property.Value.AsQueryableOrNull(); if (value != null) { var typeInfo = _typeInfoProvider.GetTypeInfo(value.ElementType); var queryableResourceDescriptor = new QueryableResourceDescriptor(typeInfo); property.Value = queryableResourceDescriptor; } } return(new ConstantExpression(newConstantQueryArgument, node.Type)); } return(base.VisitConstant(node)); }
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 GenerateBeanName(Type beanType) { return(StringBuilderUtil.Concat(delegate(StringBuilder sb) { int anonymousCounter = ++this.anonymousCounter; if (typeInfoProvider != null) { sb.Append(typeInfoProvider.GetTypeInfo(beanType).SimpleName); } else { sb.Append(beanType.Name); } sb.Append('#').Append(anonymousCounter); })); }