获取System.Linq.Expressions.Expression对象的类型

时间:2017-03-10 14:49:35

标签: c# .net linq expression-trees

在我的程序中,我有一个System.Linq.Expressions.Expression对象列表。 此列表可以包含特定Expression的不同类型。例如BinaryExpressionConditionalExpression等(请参阅https://msdn.microsoft.com/en-us/library/system.linq.expressions.expression(v=vs.110).aspx)。 阅读此列表时,我想检查Expression的具体类型(BinaryExpressionConditinalExpression等)。

如何获取派生Expression类的名称/类型?

更新

这里是表达式列表的定义:

IEnumerable<Expression<Func<T, object>>> Expressions { get; }

以及获取表达式的代码:

foreach (var expression in test.Expressions)
{
    var test = expression.GetType().ToString(); //System.Linq.Expressions.Expression`1[System.Func`2[TestObject,System.Object]]
}

1 个答案:

答案 0 :(得分:1)

你必须

expression.Body.GetType();

您所看到的是Expression<Func<,>>,您感兴趣的是.Body