我有一個現有的基本類型,我想在類型爲字符串的名稱,將其轉換爲一個派生類型的基礎,所以是這樣的:演員從類型名稱爲一個字符串類型
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
我很確定這不能完成,但肯定會很好地知道。由於
編輯:據我瞭解,我可以使用反射從類型名稱構造對象,但我希望使用現有的對象
我有一個現有的基本類型,我想在類型爲字符串的名稱,將其轉換爲一個派生類型的基礎,所以是這樣的:演員從類型名稱爲一個字符串類型
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
我很確定這不能完成,但肯定會很好地知道。由於
編輯:據我瞭解,我可以使用反射從類型名稱構造對象,但我希望使用現有的對象
我會重複一下,你可能並不需要這樣做的建議,但因爲我以前做過此操作:
Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))
應該爲你工作。
我不認爲你需要向它轉換爲派生類型。您應該能夠將其轉換爲基本類型並使用共享接口(無論它是基類還是文字接口)來執行您想要完成的任何操作。
如果不是,請考慮將行爲添加爲接口要求,以便您可以這樣做。
最後:你需要需要這樣做的一種可能性是,如果你重寫演員陣容...在這種情況下,我幾乎可以肯定你不能沒有一些重任反射。
考慮使用'Relection' – Ian
爲什麼你想投?你不能動態調用它嗎?例如'((dynamic)this).DoThisThing();' –
如果'derivedName'在編譯時不知道,那麼編譯器如何檢查'DoThisThing'是否是所有可能'derivedName'上的有效方法傳遞給那個方法?你爲什麼想要演員演員?你有沒有考慮過使用虛擬方法/接口? – Luaan