我知道这样的问题之前已经被问过了,我怀疑这是可能的,但我只是想让100%确定它不是。我想将一个变量转换为由另一个Type变量表示的类型。在VB.net或C#中(无论哪种语言都无关紧要),我想将变量转换为由另一个Type变量表示的类型。下面是样的代码,将在C#中需要的一个例子:将变量转换为由另一个Type变量表示的类型?
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
。
谢谢;那种通用的方法就是我需要的东西!看到我对这个问题的回答,看看我最终写的功能。 – Jez 2009-10-10 10:56:56