我有以下表达Expression<Func<T, object>> expr1;
有什么办法可以将其转换到Expression<Func<IUpdateConfiguration<T>, object>>
?
[更新]
还是从现有Expression<Func<IUpdateConfiguration<T>, object>>
创建一个新的Expression<Func<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));
但这将具有与原始表达主体完全不同的表达主体。根据您要完成的工作,这可能是问题,也可能不是问题。