Mas*_*oud 5 c# generics expression casting graphdiff
我有以下表达方式
Expression<Func<T, object>> expr1;
有没有办法把它投入
Expression<Func<IUpdateConfiguration<T>, object>>?
[更新]
或者Expression<Func<IUpdateConfiguration<T>, object>>从现有的新建Expression<Func<T, object>>?
不。第一个是一个接受 aT并返回一个 的函数object。第二个接受 aIUpdateConfiguration<T>并返回一个object。除非T也是 a IUpdateConfiguration<T>,否则您不能投射它。IUpdateConfiguration<T>如果您知道将 a 转换为 a 的方法T,则可以创建一个新表达式,但这与强制转换不同。
例如,考虑到:
Expression<Func<IUpdateConfiguration<T>, T> expr2;
Run Code Online (Sandbox Code Playgroud)
你可以像这样制作你想要的功能:
Expression<Func<IUpdateConfiguration<T>, object>> =
(IUpdateConfiguration<T> t) => expr1(expr2(t));
Run Code Online (Sandbox Code Playgroud)
但这将会拥有与原本完全不同的表情体。这可能是问题,也可能不是问题,具体取决于您想要实现的目标。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |