Ovo je kod za zajednički interfejs (Common assembly):
Code:
Public Interface IPlugin
Function Info() As System.String
End Interface
Ovo je kod za jedan plugin (Plugin assembly):
Code:
Public Class Proba
Implements Common.IPlugin
Public Function Info() As String Implements Common.IPlugin.Info
Return "Plugin No.1"
End Function
End Class
Ovo je poziv plugina Proba (WindowsProject assembly):
Code:
Dim A As System.Reflection.Assembly
Dim T As System.Type
Dim Obj As Common.IPlugin
A = System.Reflection.Assembly.Load("Plugin")
T = A.GetType("Plugin.Proba")
' Instanciranje
Obj = T.InvokeMember(Nothing, System.Reflection.BindingFlags.DeclaredOnly Or
System.Reflection.BindingFlags.Public Or
System.Reflection.BindingFlags.NonPublic Or
System.Reflection.BindingFlags.Instance Or
System.Reflection.BindingFlags.CreateInstance,
Nothing, Nothing, Nothing)
MsgBox(Obj.Info())
Znači WindowsProject i Plugin imaju referencu samo na Common. Kad prekompajliram sva tri i iskopiram Plugin.dll u \bin WindowsProject-a to radi. Sad ja nemam ovaj PluginEngine da vidim kako je to implementirano, ali pretpostavljam da nije u njemu bio problem već da je to nekako radilo različitim interfejsima, ali ne znam kako??? Uglavnom, moje mišljenje je da ne bi smelo da radi bez istog interfejsa... Izvini ako te smaram ali me interesuje ishod ovoga, šta pravi problem....
[Ovu poruku je menjao dusans dana 25.01.2005. u 23:16 GMT+1]