我有以下课程:
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>
。
答案 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);