2

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

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属性只是用我想象的应该是构造参数填充的。问题是无法判断参数何时是length或者它是否是实际item

4

1 回答 1

3

来自MSDN

NewArrayExpression.Expressions财产

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

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

于 2013-04-01T15:22:27.470 回答