Зачем это вообще надо? Единственное нормальное использование, которое сразу приходит в голову - плагины.
Кстати, оба варианта будут работать медленнее, чем если бы библиотека была подключена при компиляции. И пользоваться ими сложнее.
Пример мне сейчас делать некогда. Надо для начала рабобраться с
Проводником,
Фемидой и (по-возможности) потыкать
Firefox. А ещё, есть идея сделать обёртку над .NET dll, чтобы можно было делать .NET плагины для Download Master'а.
Из того, что есть (надо сюда ещё кучу проверок напихать):
- Код: Выделить всё
Imports System.Reflection
Module WorkingWithPlugins
Public Sub LoadPlugins(Menu As ToolStripMenuItem)
For Each Dll As String In Directory.GetFiles(Path.Combine(My.Application.Info.DirectoryPath, "Plugins"), "*.dll")
For Each Type As Type In Assembly.LoadFile(Dll).GetTypes()
If Type.GetInterface("IMasterPlugin") IsNot Nothing Then
Dim Obj As IMasterPlugin = Type.GetConstructor({}).Invoke({})
Menu.DropDownItems.Add(Obj.Text, Nothing, Sub() ShowMaster("", Obj.CreateStepsSequence()))
End If
If Type.GetInterface("IIndependentPlugin") IsNot Nothing Then
Dim Obj As IIndependentPlugin = Type.GetConstructor({}).Invoke({})
Menu.DropDownItems.Add(Obj.Text, Nothing, AddressOf Obj.Execute)
End If
Next Type
Next Dll
End Sub
End Module
Для получения функций из нативных dll надо использовать функции
LoadLibrary и
GetProcAddress. Почти уверен, что в сочетании с .NET выплывет куча подводных камней...