System.Reflection.Emit fun: Find the differences
This is annoying, I am trying to make something like this works using SRE:
public void Foo(out T blah)
{
blah = (T)Arguments[0];
}
I created the SRE code to generate the appropriate values, but it is producing invalid code.
Works, but not verified IL:
L_0089: stloc.2
L_008a: ldarg.1
L_008b: ldloc.2
L_008c: ldc.i4 0
L_0091: ldelem.ref
L_0092: unbox.any !!T
L_0097: stobj !!T
L_009c: ret
Works, valid (csc.exe output, of course):
L_000d: stloc.1
L_000e: ldarg.1
L_000f: ldloc.1
L_0010: ldc.i4.0
L_0011: ldelem.ref
L_0012: unbox.any !!T
L_0017: stobj !!T
L_001c: ret
And yes, the stloc.2, and stloc.1 are expected.