3
我有一個VB.NET應用程序動態加載一些DLL文件。所有的插件都在一個文件夾中,我的應用程序從這個文件夾加載所有的dll文件。處理事件從動態加載的.NET DLL
爲了加載一個dll,我用下面的代碼
_aAssembly = Reflection.Assembly.LoadFile(_File.FullName)
_aClass = _aAssembly.GetType(_AssemblyName & "." & ClassName)
_aAddin = Activator.CreateInstance(_aClass)
要在此DLL
Function RunMethod(ByVal Method As String, Optional ByVal Paramter() As Object = Nothing) As Object
Dim aMethode As MethodInfo = _aClass.GetMethod(Method)
Return aMethode.Invoke(_aAddin, Paramter)
End Function
此作品完美運行的方法。但現在我想在我的dll文件中發起一個事件,並在我的主應用程序中處理它們。我開始將下面的代碼到我的DLL:
Public Shared Event GotSomethingToSend(Str As String)
而且我火與
RaiseEvent GotSomethingToSend(Str)
我的問題的情況是,我有不知道如何「捕獲」事件在我的主應用。它甚至有可能嗎? 我已經嘗試過GetEvent()
:
Dim ei As EventInfo = _aAssembly.GetType(_AssemblyName & "." & ClassName).GetEvent("GotSomethingToSend")
但我沒有走得很遠......任何幫助?
感謝您的回答。處理程序的方法如何?因爲當我使用一個簡單的'sub'時我得到一個錯誤:'AddressOf'表達式不能轉換爲'System.Delegate',因爲類型'System.Delegate'被聲明爲'MustInherit'並且不能創建 – Alex
'Private Sub MyGotSomethingToSendHandlerMethod作爲字符串)'應該可以正常工作... –
這不起作用。仍然是'AddressOf'錯誤。 – Alex