2015-04-30 83 views
1

我有以下類:如何獲得dnlib中類的泛型類型?

public class MyGenericArray<T> 
{ 
    private T[] array; 

    public MyGenericArray(int size) 
    { 
     array = new T[size + 1]; 
    } 

    public T getItem(int index) 
    { 
     var in2 = index + 1; 
     in2 = index - in2; 
     index = index + 1 - in2 - 1; 
     return array[index]; 
    } 
} 

我用dnlib,使在CIL代碼級的一些變化。 在getItem()方法中,我想獲得this參數的類類型,ldarg.0

我期待在

param = ((Parameter)_instruction.Operand); 

我已經完成了所有可用字段搜索的param.Type,但我找不到它。 事實上,我所得到的是

ConsoleCalculator.BasicTests/MyGenericArray`1 

,我希望找到

ConsoleCalculator.BasicTests/MyGenericArray`1<!T> 

我不明白爲什麼<!T>丟失。

對於字段private T[] array;該類顯示正確,<!T>結束。

回答

0
GenericVar[] genArgs = new GenericVar[typeDef.GenericParameters.Count]; 
     for (int i = 0; i < genArgs.Length; i++) 
      genArgs[i] = new GenericVar(i); 

GenericInstSig genericInstanceType = new GenericInstSig((ClassOrValueTypeSig) methodDef.DeclaringType.ToTypeSig(), genArgs);