【发布时间】:2017-03-10 14:49:35
【问题描述】:
在我的程序中,我有一个 System.Linq.Expressions.Expression 对象列表。
此列表可以包括不同类型的特定Expression。例如BinaryExpression、ConditionalExpression 等(参见https://msdn.microsoft.com/en-us/library/system.linq.expressions.expression(v=vs.110).aspx)。
阅读此列表时,我想检查Expression 的具体类型(BinaryExpression、ConditinalExpression 等)。
如何获取派生的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]]
}
【问题讨论】:
-
你试过 GetType() 吗?它将为您提供任何对象的确切运行时类型。也应该与表达式一起使用
-
我试过了。它只给了我“System.Linq.Expressions.Expression”
-
显示您的代码示例。您也可以使用“is”运算符。
yourObj is BynaryExpression- 会给你一个布尔结果 -
include.GetType()来自哪里?你应该做expression.GetType()(你的foreach代码变量) -
@Gonzalo 对不起。错字。是表达。我试图简化我的代码...
标签: c# .net linq expression-trees