首页 > 解决方案 > 试图将事件处理程序添加到 VB.NET 中的后期绑定对象时卡住了

问题描述

我被困在试图处理由后期绑定对象引发的事件。

我得到了加载程序集(sLibFile 包含库的位置):

moAssembly = Reflection.Assembly.LoadFile(sLibFile)

获取我正在创建的对象类型没问题

moType = moAssembly.GetType("Some.Object")

创建对象是轻而易举的事......

moObject = Activator.CreateInstance(moType)

但后来我被困住了。我实例化的对象公开了一个具有以下签名的事件“GetField”:

Event GetField(FieldName As String, nPageNumber As Integer, ByRef sValue As String)

我写了一个 sub 来处理这个问题,但是....如何添加这个 Sub 作为这个事件的处理程序?AddHandler 仅适用于早期绑定的对象。

我可以得到事件好......

oEvent = moType.GetEvent("GetField")

也许

oEvent = moObject.GetType().GetEvent("GetField")

但在那之后我被卡住了......然后我如何将它链接到我写的Sub(我命名为Sub moObject_GetField)?

oEvent.AddEventHandler(moObject, AddressOf moObject_GetField)

这会引发错误“'AddressOf' 表达式无法转换为 '[Delegate]',因为类型 '[Delegate]' 被声明为 'MustInherit' 并且无法创建。”

怎么办?

标签: vb.netbindingdelegates

解决方案


推荐阅读