2013-04-01 56 views
2

当尝试使用解析表达式树下面:查找NewArrayExpression的大小

private static XElement Parse(NewArrayExpression newArray) 
{ 
    IEnumerable<XElement> items = newArray.Expressions 
     .Select(item => new XElement(ExpressionTag.NewArrayItem, Parse((dynamic)item))); 

    return new XElement(ExpressionTag.NewArrayNode, items); 
} 

我发现,传递new Int32[5]在产生相同的信息new Int32[] { 5 }NewArrayExpression.Expressions酒店仅得到填补与我想象的应该是施工参数。问题是没有办法告诉什么时候参数是长度或者它是否是实际的项目

回答

3

MSDN

NewArrayExpression.Expressions属性

获取阵列的边界,如果NodeType属性的值是 NewArrayBounds,或这些值来初始化新 阵列如果中的元素NodeType属性的值是NewArrayInit。

本质上,分支NodeType属性将帮助您消除歧义。

+0

生病的兄弟,这是完美的。它可以是'NewArrayBounds'或'NewArrayInit'。谢谢! – sircodesalot