繁体   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