Hello,

I have 2 questions.

1) I try to insert a integer array at the top of a method, which works... 
kind of, but not properly:

I do it like this:

  int[] test = new int[] { 1, 5, 3, 6, 9, 5 };
>
>                                 Instruction prev = null;
>                                 List<Instruction> lst = 
> CreateSILArray(TypeDef, VariableDef, test);
>                                 lst.Reverse();
>                                 foreach (Instruction ins in lst)
>                                 {
>                                     MethodDef.Body.Instructions.Insert(0, 
> ins);
>                                 }
>
>
> // --------------------------------
>
>  private static List<Instruction> CreateSILArray(TypeDefinition DataType, 
> VariableDefinition VariableDef, int[] values)
>         {
>             List<Instruction> il = new List<Instruction>();
>
>             il.Add(Instruction.Create(OpCodes.Ldc_I4, values.Length));
>             il.Add(Instruction.Create(OpCodes.Newarr, 
> DataType.Module.Import(typeof(Int32))));
>             il.Add(Instruction.Create(OpCodes.Stloc, VariableDef));
>
>             foreach (int j in values)
>             {
>                 int pos = getPos((int[])values, j);
>                 il.Add(Instruction.Create(OpCodes.Ldloc, VariableDef));
>                 il.Add(Instruction.Create(OpCodes.Ldc_I4, pos));
>                 il.Add(Instruction.Create(OpCodes.Ldc_I4, j));
>                 il.Add((Instruction.Create(OpCodes.Stelem_I4)));
>             }
>
>             return il;
>
>         }
>         private static int getPos(int[] items, int item)
>         {
>             return Array.FindIndex(items, w => w == item);
>         }
>
>
>
<http://puu.sh/coKTb/fd51770276.png>

But you can see that the last item of the array is added again, index 1.
Any idea why that is, why its not creating an num[5] = 5?


2) How would I call the element of an array, when i like to replace an 
integer (ldc.i4) with a call to  an array element?

~SDIM

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to