-1

我正在尝试使用反射来访问我创建的自定义程序集。具体来说,我正在尝试访问我创建的结构的公共列表。(这是定义公共假期的假期结构列表。)我确定我缺少一些基本的东西,但我在 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 中的类型,但这样做会产生相同的错误。我意识到我在将类型定义为可以使用的东西时缺少一些基本步骤,但我似乎找不到它是什么。

4

1 回答 1

1

你不能那样做。为了定义像 holType 类型的变量,它必须是静态定义的。holType 是运行时类型。

为了创建 holType 的实例,您可以编写:

Dim blah = Activator.CreateInstance(holType);
于 2012-11-19T09:00:50.440 回答