假设我有以下内容:
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);
我尝试过的其他方法似乎无效:
有更好的方法可以做到这一点吗?
如果这是唯一的方法,那么在某些情况下它可能会失败(也许使用动态生成的程序集)?
最佳答案
这就是GetElementType()
的用途。尽管有名称,它不仅可以获取数组类型的元素,还可以获取指针或引用类型所引用的类型。