2017-06-29 45 views
0

我有一個'basetype'對象,我希望將其轉換爲特定類型。我想使這個泛型,所以我希望獲得對象的名稱,並將其轉換爲具有相同名稱的類。事情是這樣:基於字符串將對象投射到某種類型

string name = baseObj.name; 

var baseObj = baseObj as getClassFor(name); 

我已經找到了激活,但我Activator.CreateInstance(),我不認爲,正是我需要的。

我的問題是,我如何將對象轉換爲基於字符串的某種類型?

+2

爲什麼你需要那個? –

+0

@TimSchmelter因爲我們有一堆對象來檢查類型並將其轉換爲該類型,所以如果不使用elses或switch語句,我認爲可以用幾行來完成它。 – thatOneGuy

+0

嘗試使用泛型而不是字符串名稱 –

回答

1

由於鑄造主要是編譯時的事情,所以不能根據字符串強制轉換爲特定的類型,因此您必須使用dynamic關鍵字。

var t= Type.GetType(baseObj.name); //This should contain the correct namespace too. ex. "MyNamespace.SpecificClass" 
dynamic specificObj = Convert.ChangeType(baseObj, t); 
specificObj.SpecificMethod();