2013-07-23 2 views
2

Я пишу приложение в .NET для редактирования инструкций любого метода. Я хочу поставить ldstr в OpCode и строку в Операнде. Mono.Cecil позволяет установить Операнд, но проблема в том, что OpCode является свойством ReadOnly. Есть ли способ редактировать OpCode? Для этого я использую этот код: Как отредактировать код операции инструкции?

Dim assembly1 As AssemblyDefinition 
assembly1 = AssemblyDefinition.ReadAssembly(rute) 
For Each modDef In assembly1.Modules 
    For Each typeDef In modDef.Types 
     For Each mDef In typeDef.Methods 
      For i = 0 To mDef.Body.Instructions.Count - 1 
      mDef.Body.Instructions(i).OpCode.Code = Mono.Cecil.Cil.Code.ldstr 
      mDef.Body.Instructions(i).Operand = "Text" 
      Next 
     Next 
    Next 
Next 

Спасибо большое!

ответ

1

Чтобы изменить код инструкции, вы можете использовать перечисление Mono.Cecil.Cil.OpCodes.

mDef.Body.Instructions(i).OpCode = Mono.Cecil.Cil.OpCodes.Ldstr; 

Если вы хотите, чтобы вставить или испускают новые инструкции, вы можете использовать Mono.Cecil.Cil.ILProcessor объект.

mDef.Body.GetILProcessor().InsertBefore(targetInstruction, Instruction.Create(OpCodes.Ldstr, "New string")); 
Смежные вопросы