我正在尝试使用反射来访问我创建的自定义程序集。具体来说,我正在尝试访问我创建的结构的公共列表。 (这是定义公共假期的假日结构列表。)我确定我遗漏了一些基本的东西,但我一直在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中的类型,但这样做会产生同样的错误。我意识到我错过了将类型定义为可以使用的东西的一些基本步骤,但我似乎无法找到它是什么。
答案 0 :(得分:1)
你做不到。为了定义类型为holType的变量,必须静态定义。 holType是一种运行时类型。
为了创建一个holType实例,你可以写:
Dim blah = Activator.CreateInstance(holType);