我有以下表达
Expression<Func<T, object>> expr1;
有什么办法可以将它投射到
Expression<Func<IUpdateConfiguration<T>, object>>
?
[更新]
Expression<Func<IUpdateConfiguration<T>, object>>
或者从现有的创建一个新的Expression<Func<T, object>>
?
我有以下表达
Expression<Func<T, object>> expr1;
有什么办法可以将它投射到
Expression<Func<IUpdateConfiguration<T>, object>>
?
[更新]
Expression<Func<IUpdateConfiguration<T>, object>>
或者从现有的创建一个新的Expression<Func<T, object>>
?
不,第一个是接受 aT
并返回a 的函数object
。第二个接受 aIUpdateConfiguration<T>
并返回 a object
。除非 theT
也是 a IUpdateConfiguration<T>
,否则你不能转换它。如果您知道将 a 转换IUpdateConfiguration<T>
为 a的方法T
,则可以创建一个新表达式,但这与强制转换不同。
例如,鉴于此:
Expression<Func<IUpdateConfiguration<T>, T> expr2;
您可以像这样制作所需的功能:
Expression<Func<IUpdateConfiguration<T>, object>> =
(IUpdateConfiguration<T> t) => expr1(expr2(t));
但这将具有与原始的完全不同的表达体。这可能是也可能不是问题,这取决于您要完成的工作。