public static bool TryBind(SyntaxTreeNode node, BindingContext bindingContext, TypeDescription expectedType, out Expression boundExpression, out Exception bindingError) { if (node == null) { throw new ArgumentNullException("node"); } if (bindingContext == null) { throw new ArgumentNullException("bindingContext"); } if (expectedType == null) { throw new ArgumentNullException("expectedType"); } boundExpression = null; bindingError = null; var newNode = node.GetNewExpression(throwOnError: true); var newExpression = default(Expression); if (AnyBinder.TryBind(newNode, bindingContext, TypeDescription.ObjectType, out newExpression, out bindingError) == false || newExpression is NewExpression == false) { if (bindingError == null) { bindingError = new ExpressionParserException(Properties.Resources.EXCEPTION_BIND_FAILEDTOBINDNEWEXPRESSION, node); } return(false); } var initializers = default(ElementInit[]); if (TryGetListInitializers(node, bindingContext, out initializers, out bindingError) == false) { if (bindingError == null) { bindingError = new ExpressionParserException(Properties.Resources.EXCEPTION_BIND_FAILEDTOBINDLISTINITIALIZERS, node); } return(false); } boundExpression = Expression.ListInit((NewExpression)newExpression, initializers); return(true); }