【问题标题】:How can I get the generic type of the class in dnlib?如何在 dnlib 中获取类的泛型类型?
【发布时间】:2015-04-30 07:49:49
【问题描述】:

我有以下课程:

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 where

param = ((Parameter)_instruction.Operand);

我已经搜索了所有可用的字段,但找不到。 其实我得到的是

 ConsoleCalculator.BasicTests/MyGenericArray`1

我希望找到

 ConsoleCalculator.BasicTests/MyGenericArray`1<!T>

我不明白为什么&lt;!T&gt; 不见了。

对于字段private T[] array;,类显示正确,&lt;!T&gt; 在末尾。

【问题讨论】:

    标签: c# cil dnlib


    【解决方案1】:
    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);
    

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多