尝试使用以下内容解析表达式树时:
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
属性只是填充了我想象的应该是构造参数。问题是没有办法判断参数是长度还是实际项目。
答案 0 :(得分:3)
来自MSDN:
NewArrayExpression.Expressions
财产
如果NodeType属性的值为,则获取数组的边界 NewArrayBounds,或初始化新元素的值 数组,如果NodeType属性的值是NewArrayInit。
基本上,NodeType
属性上的分支将帮助您消除歧义。