private object InvokeConstructor(NewExpression node) { int argCount = node.ArgumentCount(); object[] arguments = argCount > 0 ? new object[argCount] : Type.EmptyTypes; for (int i = 0; i < argCount; i++) { arguments[i] = EvaluateArgument(node.GetArgument(i)); } return(Activator.CreateInstance(node.Type, arguments)); }
protected override Expression VisitNew(NewExpression node) { Out("new "); Out(node.Type.Name); Out('('); ReadOnlyCollection <MemberInfo> members = node.Members; for (int i = 0; i < node.ArgumentCount(); i++) { if (i > 0) { Out(", "); } if (members != null) { string name = members[i].Name; Out(name); Out(" = "); } Visit(node.GetArgument(i)); } Out(')'); return(node); }