Type listType = typeof(List<string>);
ConstructorInfo? listConstructor = listType.GetConstructor(Array.Empty<Type>());
MethodInfo? addMethod = listType.GetMethod("Add");
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Newobj, listConstructor);
// Start set list members
il.Emit(OpCodes.Dup);
il.Emit(OpCodes.Ldstr, "a");
il.Emit(OpCodes.Callvirt, addMethod); // I think that the issue is with this line and the same one 3 below
il.Emit(OpCodes.Dup);
il.Emit(OpCodes.Ldstr, "b");
il.Emit(OpCodes.Callvirt, addMethod);
// End set list members
il.Emit(OpCodes.Stfld, fieldBuilder);
ConstructorInfo parentConst = parentType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Array.Empty<Type>(), null) ?? throw new Exception();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Call, parentConst);
il.Emit(OpCodes.Ret);
Type listType = typeof(List<string>);
ConstructorInfo? listConstructor = listType.GetConstructor(Array.Empty<Type>());
MethodInfo? addMethod = listType.GetMethod("Add");
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Newobj, listConstructor);
// Start set list members
il.Emit(OpCodes.Dup);
il.Emit(OpCodes.Ldstr, "a");
il.Emit(OpCodes.Callvirt, addMethod); // I think that the issue is with this line and the same one 3 below
il.Emit(OpCodes.Dup);
il.Emit(OpCodes.Ldstr, "b");
il.Emit(OpCodes.Callvirt, addMethod);
// End set list members
il.Emit(OpCodes.Stfld, fieldBuilder);
ConstructorInfo parentConst = parentType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Array.Empty<Type>(), null) ?? throw new Exception();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Call, parentConst);
il.Emit(OpCodes.Ret);