Suppose I have the following expressions:
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);
I'd like to be able to compile these into a method/delegate equivalent to the following:
void Method(T t, StringBuilder sb)
{
sb.Append(t.Name);
sb.Append(", ");
sb.Append(t.Description);
}
What is the best way to approach this? I'd like it to perform well, ideally with performance equivalent to the above method.
UPDATE So, whilst it appears that there is no way to do this directly in C#3 is there a way to convert an expression to IL so that I can use it with System.Reflection.Emit?
Unfortunately in .NET 3.5 you cannot build an expression which performs a series of arbitrary operations. Here's the list of supported expressions:
.NET 4 extends this API by adding the following expressions:
The Block expression is particularly interesting.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With