Jb

Ok I obviously misunderstood what the import does :) I have this working now.

And I did not use Instruction.Create because there is no
Instruction.Create(Instruction).

On Sun, Nov 7, 2010 at 1:21 AM, Jb Evain <[email protected]> wrote:
> Hey Simon,
>
> On Sat, Nov 6, 2010 at 12:47 PM, Simon Cropp <[email protected]> wrote:
>>                var constructorInfo =
>> typeof(Instruction).GetConstructor(BindingFlags.NonPublic |
>> BindingFlags.Instance, null, new[] { typeof(OpCode), typeof(object) },
>> null);
>>                var newInstruction =
>> (Instruction)constructorInfo.Invoke(new[] { instruction.OpCode ,
>> instruction.Operand});
>
> Why not using Instruction.Create ?
>
>>                    targetModule.Import(fieldDefinition.FieldType);
>>                    //Try really hard to import type
>>                    var methodReference =
>> (MethodReference)newInstruction.Operand;
>>
>> targetModule.Import(methodReference.MethodReturnType.ReturnType);
>>                    targetModule.Import(methodReference.DeclaringType);
>>                    targetModule.Import(methodReference);
>
> This sadly doesn't make sense. If you don't reuse the result of
> Import, you're doing something wrong basically.
>
> So basically if you have an Instruction with an Operand being a
> MethodReference, just create a new Instruction with the result of
> Import (theMethodReference).
>
> Jb
>
> --
> --
> mono-cecil

-- 
--
mono-cecil

Reply via email to