.net - Type.MakeByRefType 的反义词是什么

标签 .net reflection

Type.MakeByRefType .NET 中的方法返回类型的 by-ref 版本,例如传递 System.Int32 的类型返回表示 System.Int32& 的类型.

但是,如果您已经拥有 System.Int32& , 什么是获取普通老式的机制System.Int32 ?似乎没有相反的方法来删除 by-ref 修饰符。

目前,我已经进行了一个 hack,它可以在没有 & 的情况下重新构建符合程序集限定的名称。在类型名称的末尾,然后加载该类型,但这太脏了......

最佳答案

根据 IsByRef 的文档,您可以使用 Type.GetElementType .
对于 IsArray 的类型也是如此。或 IsPointer true .

var typeInt = typeof(int);
var typeIntRef = typeInt.MakeByRefType();
var typeIntArray = typeInt.MakeArrayType();
var typeIntPointer = typeInt.MakePointerType();

Debug.Assert(typeIntRef.GetElementType() == typeInt);
Debug.Assert(typeIntArray.GetElementType() == typeInt);
Debug.Assert(typeIntPointer.GetElementType() == typeInt);

关于.net - Type.MakeByRefType 的反义词是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607130/

相关文章:

c++ - 在 C++ 中创建成员函数名称并在运行时调用它

c# - 如何将 RelativeSource Self 绑定(bind)到 MultiConverter WPF

.net - 使用委托(delegate)和声明事件

.net - 突出显示面板区域

java - 在没有警告的情况下转换泛型类型?

c# - 如何将运行时已知的类型转换为给定类型的列表?

c# - 解析是获取成员类型的唯一方法吗?

c# - 从网络服务写入文件

c# - 像下面这样的简单构造

c# - 反射和泛型获取属性值