将一个表达式转换为另一个表达式

本文关键字:表达式 转换 另一个 一个 | 更新日期: 2023-09-27 18:11:32

我有以下表达式

Expression<Func<T, object>> expr1;

有什么办法把它投给吗

Expression<Func<IUpdateConfiguration<T>, object>>

[更新]

或者从现有的Expression<Func<T, object>>创建一个新的Expression<Func<IUpdateConfiguration<T>, object>>

将一个表达式转换为另一个表达式

否。第一个是一个接受T并返回object的函数。第二个接收IUpdateConfiguration<T>并返回object。除非T也是IUpdateConfiguration<T>,否则不能强制转换此值。如果您知道将IUpdateConfiguration<T>转换为T的方法,则可以制作一个新的表达式,但这与强制转换不同。

例如,给定以下内容:

Expression<Func<IUpdateConfiguration<T>, T> expr2;

你可以这样做你想要的功能:

Expression<Func<IUpdateConfiguration<T>, object>> = 
    (IUpdateConfiguration<T> t) => expr1(expr2(t));

但这将有一个与原来完全不同的表达体。这可能是个问题,也可能不是个问题,这取决于你想要完成什么。