![]()
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Chrisber« (14. August 2010, 16:32)
Benutzerinformationen überspringen
Dabei seit: 1. Februar 2009
Wohnort: Andernach
Frühere Benutzernamen: Bunni

Benutzerinformationen überspringen
Dabei seit: 7. Februar 2009
Wohnort: Kleinberhofen (am Arsch der Welt)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cpu_johnny« (13. April 2011, 17:58)
Ok danke. ich hab mir das Beispiel angeschaut und da wird lediglich ein paar Variablen abgefragt, könntest du das Beispiel noch erweitern, das man auch sieht wie man Funktionen startet.Ja, natürlich kann man das, sonst wäre die PluginLib wohl ziemlich nutzlos?!
Les dir mal den ersten Post ausführlich durch und guck dir das Beispielprojekt an. Dort liegt ein Testplugin und ein Testprogramm bei, dass sowohl Variablen ausliest und Funktionen aufruft.
Gruß
|
|
Visual Basic Quellcode |
1 2 3 4 5 |
Public Function RufMichAuf() As String ' Irgendwas berechnen ' BlaBlub Return "Hallo, das ist ein Test" End Function |
|
|
Visual Basic Quellcode |
1 2 3 4 |
Dim Rueckgabe As Object = PluginManager.GetMethod("RufMichAuf").Invoke(New Object() { }) Dim Text As String = Rueckgabe.ToString() ' Alternativ: Convert.ToString(Rueckgabe) MessageBox.Show("RufMichAuf hat folgenden Text zurueckgegeben:" + vbNewLine + Text) |
Ok danke und wie sieht es aus wenn ich im Plugin-Propertys verwende.Die Funktion Plugin.Invoke() gibt ein Object zurück.
Folgendes Beispiel:
Die aufzurufende Funktion aus dem Plugin:
![]()
Visual Basic Quellcode
1 2 3 4 5 Public Function RufMichAuf() As String ' Irgendwas berechnen ' BlaBlub Return "Hallo, das ist ein Test" End Function
Das Programm, dass die Funktion aufruft:
![]()
Visual Basic Quellcode
1 2 3 4 Dim Rueckgabe As Object = PluginManager.GetMethod("RufMichAuf").Invoke(New Object() { }) Dim Text As String = Rueckgabe.ToString() ' Alternativ: Convert.ToString(Rueckgabe) MessageBox.Show("RufMichAuf hat folgenden Text zurueckgegeben:" + vbNewLine + Text)
Das einfache konvertieren ist möglich, da alle Typen in .NET von Object abgeleitet sind.
Gruß
Zitat
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »singu« (14. Oktober 2009, 15:49)
|
|
Visual Basic Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Imports System.IO Imports System.Reflection Module Module1 Public Sub Main() Dim locPlugin As New PluginLib.PluginLib.PluginLib("$plugin", "PluginLibTest") With locPlugin Console.WriteLine("Instanz von PluginLib erstellt.") .AddVariable("PluginName") Console.WriteLine("PluginName wird als Variable vorausgesetzt.") .AddVariableOptional("PluginVersion", "1.0.0.0") Console.WriteLine("PluginVersion kann zus" & ChrW(228) & "tzlich angegeben werden.") .AddMethod("TestMethode") .AddMethod("RunPlugin") .AddMethod("GetInfo") Console.WriteLine("TestMethode muss zum Aufrufen vorhanden sein!") .AddMethodOptional("PluginBeenden") Console.WriteLine("PluginBeenden wird dann aufgerufen, wenn das Programm beendet wird.") .LoadPlugins((Path.GetDirectoryName(Assembly.GetExecutingAssembly.GetName.CodeBase).Replace("file:\", Nothing) & "\Plugins"), SearchOption.TopDirectoryOnly) Console.WriteLine("Alle Plugins aus dem Plugins-Ordner wurden geladen.") Console.WriteLine("") Dim locPair As KeyValuePair(Of String, PluginLib.PluginLib.Plugin) For Each locPair In .GetPlugins Console.WriteLine("Neues Plugin gefunden: " & locPair.Key) Console.WriteLine("Pluginname: " & locPair.Value.GetVariable("PluginName").GetValue.ToString) Console.WriteLine("Pluginversion: " & locPair.Value.GetVariable("PluginVersion").GetValue.ToString) locPair.Value.GetMethod("TestMethode").Invoke(New Object() {"Hallo Welt!"}) locPair.Value.GetMethod("RunPlugin").Invoke() Dim locReturn As Object = locPair.Value.GetMethod("GetInfo").Invoke(New Object() {"Test"}) MsgBox(Convert.ToString(locReturn)) Console.WriteLine("TestMethode wurde aufgerufen") Console.WriteLine("") Next Console.ReadKey() .InvokeMethodOnAllPlugins("PluginBeenden") End With End Sub End Module |
Es funktioniert jetzt auf einmal. Keine Ahnung an was es lag.Sicher, dass die Funktion auch existiert und einen String annimt? Um welche Zeile handelt es sich genau (ich vermute mal 32).
Gruß
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »singu« (15. Oktober 2009, 11:03)