2016-03-17 60 views
3

我有一個現有的基本類型,我想在類型爲字符串的名稱,將其轉換爲一個派生類型的基礎,所以是這樣的:演員從類型名稱爲一個字符串類型

public void DoStuffInDerivedType(string derivedName) { 
    (base as Type.GetType(derivedName)).DoThisThing(); 
} 

我很確定這不能完成,但肯定會很好地知道。由於

編輯:據我瞭解,我可以使用反射從類型名稱構造對象,但我希望使用現有的對象

+0

考慮使用'Relection' – Ian

+0

爲什麼你想投?你不能動態調用它嗎?例如'((dynamic)this).DoThisThing();' –

+2

如果'derivedName'在編譯時不知道,那麼編譯器如何檢查'DoThisThing'是否是所有可能'derivedName'上的有效方法傳遞給那個方法?你爲什麼想要演員演員?你有沒有考慮過使用虛擬方法/接口? – Luaan

回答

3

我會重複一下,你可能並不需要這樣做的建議,但因爲我以前做過此操作:

Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))

應該爲你工作。

2

我不認爲你需要它轉換爲派生類型。您應該能夠將其轉換爲基本類型並使用共享接口(無論它是基類還是文字接口)來執行您想要完成的任何操作。

如果不是,請考慮將行爲添加爲接口要求,以便您可以這樣做。

最後:你需要需要這樣做的一種可能性是,如果你重寫演員陣容...在這種情況下,我幾乎可以肯定你不能沒有一些重任反射。

相關問題