2014-11-06 26 views
-1

基於這個帖子:Instantiate a class from its textual name投對象實際的類動態

我試圖訪問實例化的對象內的方法,但它仍然是一個對象。我們知道它必須在我們可以訪問該方法之前進行鑄造。就我而言,我無法做演員,因爲這個班是動態的。有沒有解決方法?

到目前爲止,我的代碼與上面的帖子不一樣。我只需要在實例化後調用方法。

在此先感謝

+1

請向我們顯示您的代碼。 – 2014-11-06 03:33:38

+0

不知道你是什麼意思...所以你有運行時的類名,作爲一個字符串,一旦你得到它的一個實例,使用反射,你想要投它(如在編譯時)?如果你已經知道你想在編譯時投入的類型,那沒有任何意義。請在您嘗試解決的實際問題上添加更多詳細信息。 – 2014-11-06 03:37:22

回答

2

您有方法的動態調用至少有兩個選項時,通常的類型安全的方法並不適用:

dynamic o = GetSomeObject(); 

o.SomeMethod(); 

或:

object o = GetSomeObject(); 
MethodInfo mi = o.GetType().GetMethod("SomeMethod"); 

mi.Invoke(o); 

注意,前者是從一些簡單的編譯器和效益,並運行恬e支持(包括動態綁定的緩存),這在後面的例子中不會發生。

+0

感謝您的第一個解決方案大師!有用! – andrefadila 2014-11-06 03:47:09

0

你嘗試過實施對象的接口?

,或者您也可以使用「爲」關鍵字

MyClass test = regularobject as MyClass; 
+0

我認爲你誤解了這個問題。 – 2014-11-06 03:40:34

+1

我不知道是否有人會清楚地理解這個問題,但如果我不得不猜測,關於使用接口的建議似乎可能是他/她正在尋找的東西..但是確實還是很難說沒有得到問題澄清。 – 2014-11-06 03:42:40

+0

@SimonWhitehead:在科迪的辯護下,這個問題根本不明確。當代碼按名稱查找類型時,它完全有可能只處理實現特定接口的類型。 – 2014-11-06 03:43:39

相關問題