如何将ref类型转换为“non ref”等价物?

时间:2017-02-13 18:57:24

标签: c# reflection

假设我有以下内容:

var t = typeof(Foo).MakeByRefType();

有没有办法将结果转换回typeof(Foo)

老实说,我发现的唯一方法是:

var t = typeof(Foo).MakeByRefType();
string name = t.Name.Trim('&');
string asmQualified = t.AssemblyQualifiedName.Replace(t.Name, name);
var v = Type.GetType(asmQualified);

我尝试的其他方法似乎不起作用:

  1. 有更好的方法吗?
  2. 如果这是唯一的方法,是否会出现故障(可能是动态生成的程序集)?

1 个答案:

答案 0 :(得分:3)

这是GetElementType()的用途。尽管名称不同,它不仅可以获取数组类型的元素,它还可以获取指针或引用类型引用的类型。