后期绑定时如何初始化用户控件子控件

How to initialize user control sub controls when late binding

我有一个 usercontrol,上面有一个 webbrowser 控件,编译成它自己的程序集。在将其分解为自己的程序集之前,此控件在我的项目中有效。

现在这样做的目的是后期绑定到程序集,实例化控件,并将其添加到我的窗体上的选项卡控件中。

Dim objAssembly As Reflection.Assembly
objAssembly = Reflection.Assembly.LoadFrom(My.Application.Info.DirectoryPath + "\ppbb.dll")
Me._SelectionDetail1 = objAssembly.CreateInstance("ppbb.SelectionDetail")

当我单步执行这段代码时,它似乎创建了对象,但是当我尝试将一些 html 设置到用户控件上的 webbrowser 控件时,它 nullrefs。

我需要在用户控件上调用初始化程序吗? 我可以延迟绑定用户控件吗?

感谢您的帮助, 蒂姆

当您收到 NullReferenceException 时,这可能意味着 objAssembly.CreateInstance 返回了 Nothing,因为它找不到您请求的类型(使用调试器检查)。

确保您指定的类型名称正确。如果您的控件 MyControl 位于命名空间 MyLib 内的模块 Test 内(为了举例,只是一些随机名称),您必须使用 objAssembly.CreateInstance("MyLib.Test+MyControl").

如有疑问,只需使用调试器检查 objAssembly.GetTypes() 以获取该程序集中所有类型的列表,查找控件的 Type,然后检查 FullName 属性 个 Type

这是您必须使用的字符串,因此 CreateInstance 会找到 Type