Updatefähiges Pluginsystem

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Updatefähiges Pluginsystem

    Hallo.

    Ich wollte für meine Vb.net Anwendung(die ein TabControl enthält) Plugins schreiben,
    die extern im Ordner als Datei liegen und vom User z.B geupdatet werden können,
    indem man die alte Datei löscht und die neue(mit selbem Namen) dort einfügt.

    -Pro Plugin soll automatisch eine Tabpage erstellt werden mit dem Namen des Plugins

    Jetzt bräuchte ich mal ein paar gute Tipps:

    -Wie sieht das aus mit Zugriff auf andere Klassen(Globale Variablen etc) ?
    -Ist mein Vorhaben so möglich?
    Hi
    als einfaches Modell: Erzeuge dir ein Dictionary mit den nötigen Klassen, die du über deren Typ oder einen eindeutigen Identifizierer verwaltest. Anschließend lädst du sämtliche Klassen, die mit einem PlugInAttribute versehen sind (oder überlegst dir ein eigenes Modell) mit den entsprechenden Properties (Name, Beschreibung, usw.). Hier wäre es sinnvoll, die Details nicht im Attribut anzugeben, da die nicht globalisierbar sind, außer über einen Umweg, wie Resourcen und das wäre ein Mehraufwand.
    Jedes Plug-In erbt von einer abstrakten Klasse oder implementiert ein Interface und hat einen parameterlosen, öffentlichen Konstruktor. Sobald du die Typen hast, kannst du sie per Activator.CreateInstance instanzieren (oder einen TypeConverter verwenden) und die erzeugte Instanz per DirectCast in den Plug-In-Basistypen casten. Danach kannst du eben eine schöne Verwaltung implementieren, die die Tabpages automatisiert generiert und die dann auf dem PlugIn die Page erstellt (würde ich btw. per Attribut realisieren, das einen Editor angibt - ggf. auch System.Drawing.Design.UITypeEditor per System.ComponentModel.TypeDescriptor abfragen).

    Btw. du kannst Attribute auch auf die Assembly legen. So könntest du z.B. einen PlugInProvider über ein PlugInProviderAttribute bereitstellen, der dir die Plug-Ins lädt.

    Gruß
    ~blaze~