如果我手动构建表达式树,运行时似乎会自动确定返回类型。因此,如果我构建一个如下所示的表达式树:
// Order contains a navigation property for Customer
(Order o) => o.Customer;
运行时将返回类型确定为客户,本质上是这样的:
Expression<Func<Order, Customer>> efd = (Order o) => o.Customer;
我如何构建它 - 或更改我构建的内容,因此返回是对象,即表达式为:
Expression<Func<Order, object>> ef = (Order o) => o.Customer;
这是通用的,我在编译时不知道返回类型是 Customer;它可以是(在这种情况下)订单中的任何导航属性。
澄清
假设我从这样的表达式开始:
Expression<Func<OrderDTO, object>> ef = (OrderDTO o) => o.Customer;
我有一个例程正在重建它,通过遍历树来更改类型,OrderDTO
并Order
根据从/到类型的映射更改类型。这就是我所做的一切,但结果表达式是
Expression<Func<Order, Customer>> ef = (Order o) => o.Customer;
因此,当我重建树时,我需要以某种方式指定返回类型 - 看起来系统正在自动确定返回类型,因为我没有指定它。谢谢,雷