GetType没有定义?

时间:2011-10-10 01:57:13

标签: vb.net visual-studio-2008

我正在使用VS2008开发一个vb.net程序。在我的例子中,dt_list是List(Single)的实例成员。我写的时候

dt_list = CType(ser2.Deserialize(r), dt_list.GetType())

VS2008抱怨“类型'dt_list.GetType()'未定义。”。

为什么呢?提前谢谢。

2 个答案:

答案 0 :(得分:1)

不允许这样做的原因是必须在运行时确定GetType()类型的确切值。 CType的第二个参数只能是“在Dim语句的As子句中合法的表达式,即任何数据类型,对象,结构,类或接口的名称”,例如, List(Of String),可以在编译时确定。

以下是合法的:

dt_list = CType(ser2.Deserialize(r), List(Of Single))

编辑:

但是,在编译时未知类型的任何类型的转换更为复杂。 MSDN论坛中对this question的建议答案显示了一种方法。虽然它在C#中,我猜也可以在VB.NET中使用相同的方法。

答案 1 :(得分:0)

你想通过在运行时选择演员类型来实现什么目标?

您可以通过界面解决问题。

Dim dt_list As IList = Ctype(ser2.Deserialize(r), IList)

这使您可以访问IList中的所有列表成员。