我有一个带有webbrowser控件的usercontrol,它被编译到它自己的程序集中。在将其分解为自己的程序集之前,此控件在我的项目中有效。
现在,执行此操作的目的是延迟绑定到程序集,实例化控件,并将其添加到我的表单上的选项卡控件中。
Dim objAssembly As Reflection.Assembly
objAssembly = Reflection.Assembly.LoadFrom(My.Application.Info.DirectoryPath + "\ppbb.dll")
Me._SelectionDetail1 = objAssembly.CreateInstance("ppbb.SelectionDetail")
当我单步执行此代码时,它似乎创建了对象,但是当我尝试将一些html设置为usercontrol上的webbrowser控件时,它就是nullrefs。
我是否需要在usercontrol上调用初始化程序? 我可以延迟绑定用户控件吗?
感谢您的帮助, 添
答案 0 :(得分:0)
当您收到NullReferenceException时,可能意味着objAssembly.CreateInstance
返回Nothing
,因为它找不到您请求的类型(使用调试器检查)。
确保指定类型名称正确。如果您的控件MyControl
位于命名空间Test
内的模块MyLib
内(为了示例,只是一些随机名称),您必须使用objAssembly.CreateInstance("MyLib.Test+MyControl")
。
如果有疑问,只需使用调试器检查objAssembly.GetTypes()
以获取该程序集中所有类型的列表,查找控件的Type
,并检查FullName
属性Type
。
这是您必须使用的字符串,因此CreateInstance
会找到Type
。