Я пишу код, который оценивает деревья .NET Expression
.Я пытаюсь создать тест C # 4, чтобы проверить мою обработку ExpressionType.Index
, но я не могу понять, как создать этот тип выражения через LambdaExpression
.Независимо от того, что я пытаюсь, выражение выглядит как ExpressionType.Call
или ExpressionType.ArrayIndex
.Например:
IList<int> myList = new ObservableCollection<int> { 3, 56, 8 };
Expression<Func<int>> myExpression = () => myList[3];
// myExpression.Body.NodeType == ExpressionType.Call
myList = new int[] { 3, 56, 8 };
myExpression = () => myList[3];
// myExpression.Body.NodeType == ExpressionType.Call
int[] myArray = new int[] { 3, 56, 8 };
myExpression = () => myArray[3];
// myExpression.Body.NodeType == ExpressionType.ArrayIndex
List<int> myNonInterfaceList = new List<int> { 3, 7, 4, 2 };
myExpression = () => myNonInterfaceList[3];
// myExpression.Body.NodeType == ExpressionType.Call
Что такое IndexExpression
, и можно ли его создать с помощью встроенного LambdaExpression
в C # 4?