2017-02-13 64 views
3

假設我有以下幾點:如何將ref類型轉換爲它的「非ref」等價物?

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. 如果這是唯一的方法,是否有可能會失敗的情況(可能是動態生成的程序集)?

回答

3

這就是GetElementType()的用途。儘管有這個名字,它不僅僅用於獲取數組類型的元素,它還可以用於獲取指針或引用類型引用的類型。

+0

謝謝!事實上,我認爲這只是爲了獲得數組中包含的元素的類型。 – Chaplin89

相關問題