Wie von einem PlugIn eine Methode in der Hauptanwendung aufrufen?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MyProDE.

    Wie von einem PlugIn eine Methode in der Hauptanwendung aufrufen?

    Guten Tag,
    vielleicht kann mir ja jemand Helfen,
    unszwar möchte ich von einem PlugIn eine Methode über das Interface in der Hauptanwendung aufrufen.

    Nur leider weiß ich nicht wie man das anstellt. Ist das überhaupt möglich? ?(
    Also als Beispiel:

    Hier ist die Methode in der Hauptanwendung:
    (In diesem Fall ist es eine Konsole)

    VB.NET-Quellcode

    1. Module Main
    2. Sub Main()
    3. End Sub
    4. '''Methode die vom PlugIn über das Interface abgerufen werden soll.
    5. Public Sub ToDo()
    6. MsgBox("ToDo Test")
    7. End Sub
    8. End Module


    DLL des Interface:

    VB.NET-Quellcode

    1. Public Interface Main
    2. Sub Load()
    3. End Interface


    DLL vom PlugIn:

    VB.NET-Quellcode

    1. Public Class Main
    2. Public Sub Load() Implements Interface.Main.Load
    3. '''Nach dem das PlugIn geladen wurde, soll es die ToDo Methode über das Interface in der Hauptanwendung aufrufen.
    4. Hauptanwendung.Main.ToDo()
    5. End Sub
    6. End Class


    Info: Dies soll alles über die Interface DLL laufen, damit PlugIn Entwickler nicht die ganze Anwendung als Verweis hinzufügen müssen.

    Danke schon mal für die Hilfe :)
    Ps: Ich hoffe ich konnte mein Problem so gut wie möglich beschreiben 8-)
    Mit freundlichen Gruß MyProDE. 8-)

    Meine Programmierumgebung:
    VS 2015 Ultimate - CTP 6 --- .Net Framework 4.6 - Preview --- Windows 10 TP x64

    MyProDE schrieb:

    (In diesem Fall ist es eine Konsole)
    Geht vor die Hose, Main kannst Du so nicht überladen.
    Nimm Dir ein funktionmierendes Beispiel, findest Du hier im Forum, spiele damit, verstehe es, und dann machst Du ein eigenes.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Unter was kann ich denn suchen? Ich hab noch nie mit einem Interface gearbeitet und ich kenn das auch nur so, das man von der Hauptanwendung Methoden des PlugIn zugreifen kann aber wie geht das anders rum?
    Mit freundlichen Gruß MyProDE. 8-)

    Meine Programmierumgebung:
    VS 2015 Ultimate - CTP 6 --- .Net Framework 4.6 - Preview --- Windows 10 TP x64
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Diese Tutorial kenn ich schon :)
    Er zeigt aber nur, wie man Methoden des PlugIns aufruft und nicht wie das PlugIn Methoden der Anwendung abruft :(
    Oder lies ich da was falsch?
    Mit freundlichen Gruß MyProDE. 8-)

    Meine Programmierumgebung:
    VS 2015 Ultimate - CTP 6 --- .Net Framework 4.6 - Preview --- Windows 10 TP x64

    MyProDE schrieb:

    wie das PlugIn Methoden der Anwendung abruft
    Jou.
    Das PlugIn stellt ein Delegate bereit, das von der Anwendung belegt werden muss. Dafür muss dann im Interface eine Prozedur vorhanden sein, die das Belegung des Delegates in der Plugin-DLL durchreicht.
    Ähnlich wie der Aufruf eines Events unter C#.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Aso ok ich glaube, ich hab es verstanden :D Also muss ich in der Anwendung ein Delegate bereit stellen, was vom PlugIn besetzt wird!? Damit das PlugIn Methoden der Anwendung aufrufen kann.
    Mit freundlichen Gruß MyProDE. 8-)

    Meine Programmierumgebung:
    VS 2015 Ultimate - CTP 6 --- .Net Framework 4.6 - Preview --- Windows 10 TP x64

    MyProDE schrieb:

    in der Anwendung ein Delegate bereit stellen
    Nein.
    Die Anwendung "befüllt" das Delegate, das im Interface deklariert und seine Instanz in der PlugIn-DLL hat.
    Wenn die Hauptanwendung nix befüllt, ist der Pointer in der PlugIn-DLL Nothing und es passiert nix.
    Mach das mal wie Event und RaiseEvent (VB.NET).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich schau mir das mal (wenn ich richtig Zeit dafür habe) an. :)
    Bis dahin muss ich woll über Scripts arbeiten :D

    Danke für die Hilfe RodFromGermany :)
    Mit freundlichen Gruß MyProDE. 8-)

    Meine Programmierumgebung:
    VS 2015 Ultimate - CTP 6 --- .Net Framework 4.6 - Preview --- Windows 10 TP x64