我正在使用VS2008开发一个vb.net程序。在我的例子中,dt_list是List(Single)的实例成员。我写的时候
dt_list = CType(ser2.Deserialize(r), dt_list.GetType())
VS2008抱怨“类型'dt_list.GetType()'未定义。”。
为什么呢?提前谢谢。
答案 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中的所有列表成员。