将一个表达式转换为另一个表达式
本文关键字:表达式 转换 另一个 一个 | 更新日期: 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));
但这将有一个与原来完全不同的表达体。这可能是个问题,也可能不是个问题,这取决于你想要完成什么。