Benutzerauswahl an Klasse für Aufgabenlösung binden

  • Allgemein

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

    Benutzerauswahl an Klasse für Aufgabenlösung binden

    Hallo zusammen,

    Ich hab mir überlegt eine kleine Albumverwaltung zuschreiben, inklusiv Coveranzeige, Umbenennung nach einer Tracklist und später nem kleinen Player.

    Nun möchte ich wenn kein Albumcover vorhanden ist (und auch die Tracklist zum Umbenennen) aus dem Internet von Amazon oder Google Bilder oder Alternativen holen und überlege, wie ich das ganze lösen kann, sodass der Benutzer möglichst viel Einstellungsmöglichkeiten hat bezüglich "was von wo" und "wenns da nicht ist, dann vom nächsten".

    Ich hatte vor mir in ein extra Fenster eine ListBox zu setzen und darunter eine ComboBox zum Auswählen was gerade angezeigt werden soll (Cover/Tracklist). Rechts daneben kommen dann die Hinzufüge/Editier Controls: Eine Combobox für die Quelle, eine für das was man dort finden kann, ein Speichern Button und 2 Buttons um ein Element in der ListBox nach oben/unten zu schieben (=Suchreihenfolge). Das könnte ich dann in einer List(of Quelle) zurückgeben.
    Dazu kämen die Klassen Google und Amazon, die von einem Interface IAlbumInfoSource erben und Methoden zum Holen der Informationen bereitstellen.


    Ich überlege jetzt schon ein bisschen, mir will aber nicht einfallen wie ich das möglichst sauber lösen könnte, wie ich denn die Klasse mit den Funktionen an die Auswahl binden kann.
    Mit einer einfachen if-Abfrage wie

    VB.NET-Quellcode

    1. If auswahl = SourceEnum.Amazon Then Amazon.GetCover(*name)
    ... möchte ich mich nicht zufrieden geben, da ich gerne auch mal ein Pluginsystem implementieren wollte und das würde sich das Programm ja anbieten.


    Hätte jemand einen Ansatz für mich, wie sich die Auswahl mit einer Klasse verknüpfen ließe, sodass es vorbereitend für ein späteres Pluginsystem wäre?


    Vielen Dank schonmal für jede Antwort!
    Jetzt mal so aus dem Kopf.
    Du hast ja ein Interface welches die GetCover Methode enthält.

    Dann mach einfach

    VB.NET-Quellcode

    1. Sub HoleCover(byval Source as IAlbumInfoSource)
    2. Source.GetCover(*name)
    3. End Sub


    Wenn eine Klasse dieses Interace implementiert kann diese auch für diese Methode verwendet werden.
    Vorausgesetzt du proggst mit Option Strict On.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hi,

    danke für die Antwort, nur hab ich mein Frage wahrscheinlich etwas missverständlich gestellt.
    Dein Codebeispiel würde erst etwas später zum Einsatz kommen.

    Die Frage ist grade noch, wie ich denn erstmal auf den Parameter komme den ich übergeben würde.
    Ich müsste irgendwie eine Referenz der Klasse (wenn es gehen würden) in dem Objekt vom Typ "Quelle" beim Erstellen hinterlegen oder etwas in der Richtung.
    Dann könnte ich später die Liste der Quellen durchgehen und erstmal die rauspicken die Quelle für ein Cover sind und dann bspw die erste Quelle rauspicken, von ihr auf die Klasse schließen die verwendet werden soll und dann versuchen bei bspw Amazon ein Albumcover zu finden.

    Grüße

    Edit: Meine einzige Lösung wäre jetzt jeder der Source-Klassen eine eindeutige ID zu geben und in einem QuellElement wird dann die Referenz, auf ein Objekt gespeichert, beim Speichern und Laden wird dann jeweils aus der Id das Objekt gefunden.
    Nicht ganz was ich wollte, da ich mir eine Lösung mit statischen Methoden vorstellte, aber vielleicht kommt ja noch was.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „high152“ ()