private void CreatePropertyExpressions() { var name = Expression.Constant(_property.Name, typeof(string)); _containsKey = Expression.Call(_param, DictionaryContainsKeyMethod, name); _nameProperty = Expression.Property(_obj, _property); _itemProperty = Expression.Property(_param, DictionaryIndexerProperty, name); }
protected override Expression VisitIndex(IndexExpression node) { if (node.Arguments.Any(e => !(e is ConstantExpression))) { throw new NotSupportedException("Index expressions are only supported with constants."); } return base.VisitIndex(node); }
internal static Index Index(IndexExpression expression) { return new Index() { Object = Serialize(expression.Object), Indexer = expression.Indexer.Null(p => PropertyRef.Serialize(p)), Arguments = expression.Arguments.Select(Serialize).ToArray(), }.Apply(n => n.Type = TypeRef.Serialize(expression.Type)); }
protected override Expression VisitIndex(IndexExpression node) { var args = Visit(node.Arguments); foreach(var arg in args) AddParameter(arg); var obj = Visit(node.Object); AddParameter(obj); return null; }
protected override Expression VisitIndex(IndexExpression node) { return ProtectFromNull(node, node.Object); }
protected override Expression VisitIndex(IndexExpression node) { throw new NotSupportedException(); }
public IndexExpressionProxy(IndexExpression node) { _node = node; }
public string TranslateIndex(IndexExpression expression, bool setter = false) { var target = Translate(expression.Object); var args = expression.Arguments.Select(Translate).ToArray(); var method = setter ? expression.Indexer.SetMethod : expression.Indexer.GetMethod; var result = TryTranslateMethodCall(target, args, method); if (result != null) return result; return target + "[" + args.Single() + "]()"; }
public virtual bool IsEvaluatableIndex (IndexExpression node) { ArgumentUtility.CheckNotNull ("node", node); return true; }
private Variable VisitIndex(IndexExpression node) { var args = new List<Variable> { node.Object != null ? Visit(node.Object) : Variable.CreateConstant(typeof (object), null), node.Indexer != null ? Variable.CreateConstant(typeof (string), node.Indexer.Name) : Variable.CreateConstant(typeof (string), "") }; args.AddRange(VisitExpressions(node.Arguments.ToArray())); return ComputeTempVar(node, OpCode.Index, args.ToArray()); //if (node.Object != null) //{ // this.Visit(node.Object); //} //else //{ // this.Out(node.Indexer.DeclaringType.Name); //} //if (node.Indexer != null) //{ // this.Out("."); // this.Out(node.Indexer.Name); //} //this.VisitExpressions<Expression>('[', node.Arguments, ']'); }
public IndexExpressionProxy(IndexExpression node) { ContractUtils.RequiresNotNull(node, nameof(node)); _node = node; }
private QueryNode VisitIndex(IndexExpression expression) { var queryNode = Visit(expression.Object); if (!(queryNode is FieldNode)) throw new NotSupportedException(string.Format("Unsupported expression node type: {0}", (object)expression.NodeType)); return queryNode; }
protected virtual Expression VisitIndex(IndexExpression e) { return e; }
protected virtual Expression VisitIndex(IndexExpression index) { IEnumerable<Expression> args = this.VisitExpressionList(index.Arguments); Expression expr = this.Visit(index.Object); if (args != index.Arguments || expr != index.Object) { return Expression.MakeIndex(expr, index.Indexer, args); } return index; }
}//end static method internal XElement IndexExpressionToXElement(IndexExpression e) { object value; string xName = "IndexExpression"; object[] XElementValues = new object[6]; value = ((IndexExpression)e).NodeType; XElementValues[0] = GenerateXmlFromProperty(typeof(System.Linq.Expressions.ExpressionType), "NodeType", value ?? string.Empty); value = ((IndexExpression)e).Type; XElementValues[1] = GenerateXmlFromProperty(typeof(System.Type), "Type", value ?? string.Empty); value = ((IndexExpression)e).Object; XElementValues[2] = GenerateXmlFromProperty(typeof(System.Linq.Expressions.Expression), "Object", value ?? string.Empty); value = ((IndexExpression)e).Indexer; XElementValues[3] = GenerateXmlFromProperty(typeof(System.Reflection.PropertyInfo), "Indexer", value ?? string.Empty); value = ((IndexExpression)e).Arguments; XElementValues[4] = GenerateXmlFromProperty(typeof(System.Collections.ObjectModel.ReadOnlyCollection<System.Linq.Expressions.Expression>), "Arguments", value ?? string.Empty); value = ((IndexExpression)e).CanReduce; XElementValues[5] = GenerateXmlFromProperty(typeof(System.Boolean), "CanReduce", value ?? string.Empty); return new XElement(xName, XElementValues); }//end static method
private static string VisitIndex(IndexExpression node) { throw new NotImplementedException(); }
protected override Expression VisitIndex(IndexExpression node) { var num = ExpressionHelper.GetIndexerCount(node); var index = context.IndexerParameters.ElementAt(num); return Expression.MakeIndex(Visit(node.Object), node.Indexer, new[] { index }); }