System.Linq.Dynamic.ExpressionParser.ParseNewObject C# (CSharp) Method

ParseNewObject() private method

private ParseNewObject ( ) : Expression
return Expression
		private Expression ParseNewObject()
		{
			NextToken();
			ValidateToken(TokenId.OpenParen, Res.OpenParenExpected);
			NextToken();
			var properties = new List<DynamicProperty>();
			var expressions = new List<Expression>();
			while (true)
			{
				int exprPos = _token.Position;
				Expression expr = ParseExpression();
				string propName;
				if (TokenIdentifierIs("as"))
				{
					NextToken();
					propName = GetIdentifier();
					NextToken();
				}
				else
				{
					var me = expr as MemberExpression;

					if (me != null)
					{
						propName = me.Member.Name;
					}
					else
					{
						if (!DynamicDictionary.TryGetAlias(expr, exprPos, out propName))
							throw ParseError(exprPos, Res.MissingAsClause);
					}
				}
				expressions.Add(expr);
				properties.Add(new DynamicProperty(propName, expr.Type));
				if (_token.ID != TokenId.Comma) break;
				NextToken();
			}
			ValidateToken(TokenId.CloseParen, Res.CloseParenOrCommaExpected);
			NextToken();
			return CreateMemberInit(properties, expressions);
		}
ExpressionParser