反思:如何获取by-ref类型的基础类型

Qwe*_*tie 9 .net reflection byref

我很惊讶地发现"ref"和"out"参数没有用特殊属性标记,尽管存在ParameterInfo.IsOut,ParameterInfo.IsIn(据我所知,它们都是假的),ParameterAttributes.在和ParameterAttributes.Out中.相反,"ref"参数实际上由一种特殊类型的"Type"对象表示,"out"参数只是具有附加属性的ref参数(我还不知道哪种属性).

无论如何,要创建一个by-ref参数,你可以调用Type.MakeByRefType(),但我的问题是,如果你已经有一个by-ref类型,你如何回到原始类型?

提示:它不是UnderlyingSystemType:

Type t = typeof(int);
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE
Run Code Online (Sandbox Code Playgroud)