【发布时间】:2011-11-08 18:05:34
【问题描述】:
我有一个接受Expression<Func<T, object>> 实例的方法。我想获取特定表达式实例返回的 实际 数据类型,而不是 object。
我可以让它为直接属性引用工作,所以如果我传入表达式x => x.IntegerProperty,我可以获得整数的类型引用。这种方法需要将其转换为 MemberExpression。
但是,我无法让它适用于任意表达式。例如,如果表达式是x => x.IntegerProperty.ToString(),我想获得一个字符串的类型引用。我无法将它编译为 MemberExpression,如果我只是 .Compile() 它并检查返回类型,我会得到“对象”。
如何查看具体的表达式实例并推导出实际的返回类型?
【问题讨论】:
-
从技术上讲,表达式的实际返回类型是...
object。由于该函数需要返回object,因此生成了必要的表达式以确保它是返回的类型(在本例中为转换)。
标签: c# reflection expression-trees