public ListInitNode(ListInitExpression listInitExpression, ConstantExpression[] constExpressions, ParameterExpression[] parameterExpressions) { if (listInitExpression == null) { throw new ArgumentNullException("listInitExpression"); } if (constExpressions == null) { throw new ArgumentNullException("constExpressions"); } if (parameterExpressions == null) { throw new ArgumentNullException("parameterExpressions"); } this.listInitExpression = listInitExpression; this.newNode = new NewNode(listInitExpression.NewExpression, constExpressions, parameterExpressions); this.initializationNodes = new KeyValuePair <MethodInfo, ExecutionNode[]> [listInitExpression.Initializers.Count]; for (var i = 0; i < this.initializationNodes.Length; i++) { var initialization = listInitExpression.Initializers[i]; var argumentNodes = new ExecutionNode[initialization.Arguments.Count]; for (var a = 0; a < initialization.Arguments.Count; a++) { argumentNodes[a] = AotCompiler.Compile(initialization.Arguments[a], constExpressions, parameterExpressions); } this.initializationNodes[i] = new KeyValuePair <MethodInfo, ExecutionNode[]>(initialization.AddMethod, argumentNodes); } }
public MemberInitNode(MemberInitExpression memberInitExpression, ConstantExpression[] constExpressions, ParameterExpression[] parameterExpressions) { if (memberInitExpression == null) { throw new ArgumentNullException("memberInitExpression"); } if (constExpressions == null) { throw new ArgumentNullException("constExpressions"); } if (parameterExpressions == null) { throw new ArgumentNullException("parameterExpressions"); } this.memberInitExpression = memberInitExpression; this.newNode = new NewNode(memberInitExpression.NewExpression, constExpressions, parameterExpressions); this.memberAssignmentNode = memberInitExpression.Bindings.Any(b => b is MemberAssignment) ? new MemberAssignmentsNode(memberInitExpression.Bindings, constExpressions, parameterExpressions) : MemberAssignmentsNode.Empty; this.listBindingNode = memberInitExpression.Bindings.Any(b => b is MemberListBinding) ? new MemberListBindingsNode(memberInitExpression.Bindings, constExpressions, parameterExpressions) : MemberListBindingsNode.Empty; this.memberMemberBindingNode = memberInitExpression.Bindings.Any(b => b is MemberMemberBinding) ? new MemberMemberBindingsNode(memberInitExpression.Bindings, constExpressions, parameterExpressions) : MemberMemberBindingsNode.Empty; }