如何在dnlib中获取类的泛型类型?

时间:2015-04-30 07:49:49

标签: c# cil 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.Type

param = ((Parameter)_instruction.Operand);

我搜索了所有可用的字段,但我找不到它。 事实上,我得到的是

 ConsoleCalculator.BasicTests/MyGenericArray`1

我希望找到

 ConsoleCalculator.BasicTests/MyGenericArray`1<!T>

我不明白为什么缺少<!T>

对于字段private T[] array;,该字段正确显示,最后显示<!T>

1 个答案:

答案 0 :(得分: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);