Visual Studio 2010说我的类型变量没有定义

时间:2012-11-19 08:53:30

标签: vb.net reflection

我正在尝试使用反射来访问我创建的自定义程序集。具体来说,我正在尝试访问我创建的结构的公共列表。 (这是定义公共假期的假日结构列表。)我确定我遗漏了一些基本的东西,但我一直在IDE中遇到这个奇怪的错误。

Dim f As New OpenFileDialog() With { ... }

Dim rgAsm as Reflection.Assembly
Dim rgType as Type
Dim rgDLL as Object

rgASM = Reflection.Assembly.LoadFile(f.Filename)
rgType = rgAsm.GetType("rgReporting.rgReporting")
rgDLL = Activator.CreateInstance(rgType)

Dim holType As Type = modConf.rgAsm.GetType("rgReporting.PublicHolidays+Holiday")

If holType Is Nothing Then MsgBox("no.") Else MsgBox("yes!")

当我运行上面的代码时,我得到“是的!” msgbox意味着我的类型已由GetType()定义。但是,当我尝试编写以下代码时:

Dim blah as holType

IDE给出了这个错误:“未定义类型'holType'。”

我希望最后在a中使用a中的类型,但这样做会产生同样的错误。我意识到我错过了将类型定义为可以使用的东西的一些基本步骤,但我似乎无法找到它是什么。

1 个答案:

答案 0 :(得分:1)

你做不到。为了定义类型为holType的变量,必须静态定义。 holType是一种运行时类型。

为了创建一个holType实例,你可以写:

Dim blah = Activator.CreateInstance(holType);