簡體   English   中英

使用get類型然后在C#中轉換為該類型

[英]Using get type and then casting to that type in C#

我的代碼如下:

var t = SomeInstanceOfSomeClass.GetType();
((t)SomeOtherObjectIWantToCast).someMethodInSomeClass(...);

那不行,編譯器返回關於(t)說預期的Type或名稱空間的錯誤。 你怎么能這樣做?

我相信它確實很明顯......

C#4.0允許使用dynamic類型。

也就是說, 除非您正在進行COM互操作或為動態語言編寫運行時, 否則幾乎肯定不希望這樣做。 (Jon你還有其他用例嗎?)

我在這里回答了一個重復的問題。 但是,如果您只需要在C#3.0及更低版本的任意對象的實例上調用方法,則可以使用反射:

obj.GetType().GetMethod("someMethodInSomeClass").Invoke(obj);
if(t is ThisType) {
    ThisType tt = (ThisType)t;
    /*do something here*/
}else if(t is ThatType) {
    ThatType tt = (ThatType)t;
    /*do something here*/
}

等等

這是你在C#3.5及更低版本中所做的最好的,真的。

為了在你的問題中轉換你描述的方式,你必須在編譯時聲明類型,而不是運行時。 這就是你遇到問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM