[英]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.