Как использовать valuetype в dnlib для вставки Console.ReadKey()
Я использую dnlib и хочу вставить Console.ReadKey() в конце Console.WriteLines в другой исполняемый файл.
Код ниже частично работает. Хотя проблема в том. Это производит MSIL:
IL_0028: call void [mscorlib]System.Console::ReadKey()
Когда я хочу это произвести
IL_015a: call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey()
Код
ModuleDefMD mod = ModuleDefMD.Load(args[0]);
ModuleDef mode = new ModuleDefUser(args[0]);
Importer importer = new Importer(mod);
AssemblyDef asmr = mod.Assembly;
foreach (TypeDef type in mod.GetTypes())
{
foreach (MethodDef Method in type.Methods)
{
if (Method.Name == "Main")
{
TypeRef consoleRef = new TypeRefUser(mod, "System", "Console", mod.CorLibTypes.AssemblyRef);
MemberRef ReadAll = new MemberRefUser(mod, "ReadKey",
MethodSig.CreateStatic(mod.CorLibTypes.Void),
consoleRef);
var method = Method;
var instructions = method.Body.Instructions;
instructions.Insert(8, new Instruction(OpCodes.Call, ReadAll));
}
}
}