Возникла необходимость динамически создать следующий класс
public class A
public Sub Exec(byref Factory as Object)
Factory.A="New Value"
end Sub
end class
При просмотре ILDasm код выглядит следующим образом:
.method public instance void Exec(object& Factory) cil managed
{
// Code size 31 (0x1f)
.maxstack 6
.locals init (object[] V_0)
IL_0000: ldarg.1
IL_0001: ldind.ref
IL_0002: ldnull
IL_0003: ldstr "A"
IL_0008: ldc.i4.1
IL_0009: newarr [mscorlib]System.Object
IL_000e: stloc.0
IL_000f: ldloc.0
IL_0010: ldc.i4.0
IL_0011: ldstr bytearray (1D 04 3E 04 32 04 3E 04 35 04 20 00 37 04 3D 04 // ..>.2.>.5. .7.=.
30 04 47 04 35 04 3D 04 38 04 35 04 ) // 0.G.5.=.8.5.
IL_0016: stelem.ref
IL_0017: ldloc.0
IL_0018: ldnull
IL_0019: call void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.LateBinding::LateSet(object,class [mscorlib]System.Type, string,object[],string[])
IL_001e: ret
} // end of method A::Exec
Получилось все за исключением строки :
IL_0019: call void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.LateBinding::LateSet(object,class [mscorlib]System.Type, string,object[],string[])
Прописываю строку MIL.Emit(OpCodes.Call, ), но вот какой оргумент нужно подстваить, который преобразовался в нужную строку, так и не смог найти.
Заранее благодарен за ответ!
Ответить
|