VB.NET 动态加载DLL

在刚开始用VB.NET的时候,就好奇动态加载DLL,像插件那样,可以选择性下载和使用,但奈何当时极度菜鸟,便放在一边。现在接触VB.NET也有一段时间了,我想应该差不多做做这个了。

OK~首先谷歌,找到了一段不错的代码和解释文章,动手实操。

先写那个DLL的代码

Imports System
Imports System.Windows.Forms
Public Class Test
    Public Function Add(ByVal add1 As Integer, ByVal add2 As Integer) As Integer
        Return add1 + add2
    End Function
    Sub New()
        MessageBox.Show("初始化")
    End Sub
End Class

编译,把DLL复制出来(DLL的名字是ClassTest.dll

接着写窗体程序

Public Function Add(ByVal add1 As Integer, ByVal add2 As Integer) As Integer
    Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Application.StartupPath & "ClassTest.dll")
    Dim classtemp As Type = asm.GetType("ClassTest.Test")
    Dim obj As Object = asm.CreateInstance(classtemp.FullName)
    Return CallByName(obj, "Add", vbMethod, add1, add2) '这里特别注意CallByName的用法
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show(Add(1, 1))
End Sub

 

LoadFile:参数是DLL的路径,最好用绝对路径。

asm.GetType:参数是“DLL文件名.類名”,文件名不能帶有後綴

记住,事例代码的双引号里的内容都是可变的,剩下的自己调试

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注