public ObjectInitializersWithLinqExpressions(IEnumerable <MemberBinding> bindings) { List <IReadOnlyList <ILinqExpression> > elements = new List <IReadOnlyList <ILinqExpression> >(); Dictionary <string, ObjectInitializersWithLinqExpressions> initializers = new Dictionary <string, ObjectInitializersWithLinqExpressions>(); Dictionary <string, ILinqExpression> members = new Dictionary <string, ILinqExpression>(); foreach (MemberBinding binding in bindings) { switch (binding.BindingType) { case MemberBindingType.Assignment: members.Add( binding.Member.Name, LinqExpressionBuilder.BuildExpression(((MemberAssignment)binding).Expression)); break; case MemberBindingType.ListBinding: elements.AddRange(LinqExpressionBuilder.BuildExpressions(((MemberListBinding)binding).Initializers)); break; case MemberBindingType.MemberBinding: initializers.Add( binding.Member.Name, new ObjectInitializersWithLinqExpressions(((MemberMemberBinding)binding).Bindings)); break; } } this.members = members; this.elements = elements; this.initializers = initializers; }
public DynamicMethodCallExpressionWithLinqExpressions(DynamicExpression expression) { LinqExpression = expression; //this.expression = LinqExpressionBuilder.BuildExpression(expression.); parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments); throw new NotImplementedException(); }
public NewArrayExpressionWithLinqExpressions(NewArrayExpression expression) { Expression = expression; dimensions = new List <int>(); for (Type arrayType = expression.Type; arrayType.IsArray; arrayType = arrayType.GetElementType()) { dimensions.Add(arrayType.GetArrayRank()); } elementType = TypeReferenceWithReflectionFactory.CreateReference(expression.Type.GetElementType()); initialSizeExpressions = LinqExpressionBuilder.BuildExpressions(expression.Expressions); }
public ListInitializerExpressionWithLinqExpressions(ListInitExpression expression) { Expression = expression; createListExpression = LinqExpressionBuilder.BuildExpression(expression.NewExpression) as ICreateListLinqExpression; initialValues = LinqExpressionBuilder.BuildExpressions(expression.Initializers).ToArray(); }
public DelegateMethodCallExpressionWithLinqExpressions(InvocationExpression expression) { LinqExpression = expression; this.expression = LinqExpressionBuilder.BuildExpression(expression.Expression); parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments); }
public NewExpressionWithLinqExpressions(NewExpression expression) { Expression = expression; parameters = LinqExpressionBuilder.BuildExpressions(expression.Arguments); type = TypeReferenceWithReflectionFactory.CreateReference(expression.Constructor.DeclaringType); }
public SwitchCaseStatementWithLinqExpressions(SwitchCase statement) { Statement = statement; matches = LinqExpressionBuilder.BuildExpressions(statement.TestValues); statements = LinqStatementBuilder.BuildStatements(statement.Body); }
public ArrayIndexExpressionWithLinqExpressions(IndexExpression expression) { Expression = expression; array = LinqExpressionBuilder.BuildExpression(expression.Object); indexes = LinqExpressionBuilder.BuildExpressions(expression.Arguments); }
public MethodCallExpressionWithLinqExpressions(MethodCallExpression expression) { LinqExpression = expression; this.expression = LinqExpressionBuilder.BuildExpression(expression.Object); parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments); }