5

我有以下表达

Expression<Func<T, object>> expr1;

有什么办法可以将它投射到

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

[更新]

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

4

1 回答 1

3

不,第一个是接受 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));

但这将具有与原始的完全不同的表达体。这可能是也可能不是问题,这取决于您要完成的工作。

于 2014-07-06T06:40:43.187 回答