【问题标题】:Reflection: How to get the underlying type of a by-ref type反射:如何获取引用类型的底层类型
【发布时间】:2024-05-23 08:10:02
【问题描述】:

我惊讶地发现“ref”和“out”参数没有用特殊属性标记,尽管存在 ParameterInfo.IsOut、ParameterInfo.IsIn(据我所知,这两个参数始终为 false) 、ParameterAttributes.In 和 ParameterAttributes.Out。相反,“ref”参数实际上由一种特殊的“Type”对象表示,而“out”参数只是带有附加属性的 ref 参数(我还不知道是什么样的属性)。

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

提示:它不是 UnderlyingSystemType:

Type t = typeof(int);
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE

【问题讨论】:

    标签: .net reflection byref


    【解决方案1】:

    致电GetElementType()

    【讨论】: