делаю прогу
хотелось бы сделать подключение плагинов. Но возникла проблема.
Хотелось для удобства с длл брать не (String,Integer,Single и т.д), а Structure или Class если ето возможно
например создаю плагин(длл) на vb.net и надо определить его параметры . я делаю так:
; Плагин
Public Class Plugin
Structure PluginInfo
dim name As String
dim version As Single
End Class
Public Function GetInfo() As PluginInfo
Dim pi As New PluginInfo()
pi.name = "Test Plagin"
pi.version = 0.1
Return pi
End Function
End Class
; Программа
Structure PluginInfo
Dim name As String
Dim version As Single
End Structure
Public Class Plugin
Dim A As [Assembly]
Dim _FileName As String
Public Sub New(ByVal filename As String)
_FileName = filename
End Sub
Public Sub Load()
A = [Assembly].LoadFrom(_FileName) 'Loads the DLL
End Sub
Public Function Info()
Dim t As Type = A.GetType("PluginDLL.Plugin")
Dim bf As BindingFlags = BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance
Dim obj As Object = t.InvokeMember("GetInfo", bf Or BindingFlags.CreateInstance, Nothing, Nothing, Nothing)
Return t.InvokeMember("GetInfo", bf Or BindingFlags.InvokeMethod, Nothing, obj, Nothing)
End Function
End Class
Public Function LoadPlugin()
Dim getinfo As New PluginInfo()
getinfo = NewPlugin.Info
Debug.WriteLine(getinfo.version.ToString)
End Function
И на строке << getinfo = NewPlugin.Info >> возникает ошибка {Additional information: Specified cast is not valid.}
Вроде в ДДЛ функция GetInfo() возращает(Return) значение pi как Object и из-за этого getinfo = NewPlugin.Info несовмещаются. Если NewPlugin.Info является Object, то кок можно это сконвертировать в Structure PluginInfo?????