chi*_*tom 6 c# linq lambda dynamicmethod
假设我有以下表达式:
Expression<Action<T, StringBuilder>> expr1 = (t, sb) => sb.Append(t.Name);
Expression<Action<T, StringBuilder>> expr2 = (t, sb) => sb.Append(", ");
Expression<Action<T, StringBuilder>> expr3 = (t, sb) => sb.Append(t.Description);
Run Code Online (Sandbox Code Playgroud)
我希望能够将这些编译成与以下内容等效的方法/委托:
void Method(T t, StringBuilder sb)
{
sb.Append(t.Name);
sb.Append(", ");
sb.Append(t.Description);
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最佳方法是什么?我希望它表现良好,理想情况下性能与上述方法相当.
更新 所以,虽然似乎没有办法在C#3中直接执行此操作,有没有办法将表达式转换为IL,以便我可以将它与System.Reflection.Emit一起使用?
不幸的是,在 .NET 3.5 中,您无法构建执行一系列任意操作的表达式。以下是支持的表达式列表:
.NET 4 通过添加以下表达式扩展了此 API:
Block表达式特别有趣。
| 归档时间: |
|
| 查看次数: |
1115 次 |
| 最近记录: |