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