C#C
C#3y ago
Finnland

❔ how do i print the bytecode generated from a ILGenerator? (im getting an error)

i am trying to generate and print csharp bytecode using ILGenerator and AssemblyBuilder, ModeuleBuilder, etc, but when i try to get my bytecode using the code below, i get the following error:
'System.InvalidOperationException' occurred in System.Private.CoreLib.dll: 'Operation is not valid due to the current state of the object.'

my code:
AssemblyName assemblyName = new AssemblyName("CSharpBytecode");
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);

ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("CSharpBytecode");
TypeBuilder typeBuilder = moduleBuilder.DefineType("CSharpBytecode", TypeAttributes.Public);
MethodBuilder methodBuilder = typeBuilder.DefineMethod("MyMethod", MethodAttributes.Public);

ILGenerator ilGenerator = methodBuilder.GetILGenerator();

ilGenerator.Emit(OpCodes.Ldstr, "Hello, world!");
ilGenerator.Emit(OpCodes.Ret);

byte[] methodBody = methodBuilder.GetMethodBody().GetILAsByteArray(); // this errors

PS, i have no clue if this is beginner, intermediate, or advanced (and im likely in way over my head here)
Was this page helpful?