【发布时间】:2009-10-10 18:58:05
【问题描述】:
我知道以前有人问过这样的问题,我怀疑这是否可能,但我只是想 100% 确定它不是。
在 VB.net 或 C#(任何一种语言,都无所谓)中,我想将一个变量强制转换为由另一个 Type 变量表示的类型。下面是 C# 中需要的那种代码示例:
Object castMe = new Foo();
Type castTo = typeof(Foo);
Foo beenCast = (castTo.GetRepresentedType())castMe;
beenCast.MethodInFoo();
...或者在 VB 中,类似:
Dim castMe As Object = New Foo()
Dim castTo As Type = GetType(Foo)
Dim beenCast As Foo = CType(castMe, castTo.GetRepresentedType())
beenCast.MethodInFoo()
显然,最大的问题是指定一个方法,该方法将在运行时为强制转换类型参数返回一个类型,而不是实际的编译时类型(即CType(castMe, Foo))。我不太明白为什么你不能这样做,虽然......当然,可能会导致运行时转换错误,但你也可以在指定编译时类型时得到它们。如果 castMe 不是 Foo 的实例,那么即使 CType(castMe, Foo) 仍然会抛出 InvalidCastException。
【问题讨论】: