查找NewArrayExpression的大小

时间:2013-04-01 15:18:32

标签: c# reflection expression-trees

尝试使用以下内容解析表达式树时:

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属性只是填充了我想象的应该是构造参数。问题是没有办法判断参数是长度还是实际项目

1 个答案:

答案 0 :(得分:3)

来自MSDN

NewArrayExpression.Expressions财产

  

如果NodeType属性的值为,则获取数组的边界   NewArrayBounds,或初始化新元素的值   数组,如果NodeType属性的值是NewArrayInit。

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