Dataset an Klassenbibliothek übermitteln und übernehmen

  • VB.NET
  • .NET 5–6

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

    Dataset an Klassenbibliothek übermitteln und übernehmen

    Servus,

    ich habe einmal eine ausführbare Konsolenanwenung(Name: Updater) und eine Klassenbibliothek(Name: Woocommerce). Ich will nun ein Dataset an diese Klassenbibliothek übergeben, nur bekomme ich ständig die Fehlermeldung, dass man das Dataset nicht richtig Casten kann.

    Updater.vb:

    VB.NET-Quellcode

    1. Public Woocom As New Updater.Woocommerce
    2. Dim Woo As New Woocommerce.Class1
    3. Sub Main()
    4. Woo.StartUp(Woocom, "")
    5. End Sub


    Woocommerce.vb:

    VB.NET-Quellcode

    1. Sub StartUp(ByVal Datensatz As Object, ByVal URL As String, Optional ByVal Menu As String = "Produkte") 'überprüfen, welcher Typ der Datensatz hast und übergeben der Datenbankverbindungsrelevante Parameter
    2. Link = URL
    3. DefaultMenu = Menu
    4. If TypeOf Datensatz Is String Then
    5. SplitDatensatz(CType(Datensatz, String)) 'wenn es als String übergeben wird, wird diese aufgesplittet und in das Dataset geschrieben
    6. ElseIf TypeOf Datensatz Is Data.DataRow Then
    7. Woocommerce.CSVImport.AddCSVImportRow(CType(Datensatz, Woocommerce.Woocommerce.CSVImportRow)) 'sofern es sich um eine DataRow handelt, wird diese ins DataSet eingetragen.
    8. ElseIf TypeOf Datensatz Is Data.DataSet Then
    9. Woocommerce = DirectCast(Datensatz, Woocommerce.Woocommerce)' hier erscheint der Fehler, das man das Object 'Datensatz' nicht richtig Casten
    10. Else
    11. Throw New System.Exception("Es wurde der Datensatz im falschen Format übergeben!") 'wenn keines der o.g. Typen gefunden worden sind, wird ein Fehler ausgegeben
    12. End If


    Fehler:
    System.InvalidCastException: "Unable to cast object of type 'Updater.Updater.Woocommerce' to type 'Woocommerce.Woocommerce.Woocommerce'."


    Die beiden benutzen das gleiche Datasetschema.

    Ich verstehe es so, das er den Typ von Updater.Updater.Woocommerce nicht in Woocommerce.Woocommerce.Woocommerce konvertieren kann. Die frage ist nur wieso? Die haben den gleichen Schemenaufbau?
    Das gleiche ist aber nicht dasselbe.

    VB.NET-Quellcode

    1. Class Eurofighter
    2. Property WeightInKG As Integer
    3. Property Color As Color
    4. Property Price As Decimal
    5. End Class
    6. Class Modellflugzeug
    7. Property WeightInKG As Integer
    8. Property Color As Color
    9. Property Price As Decimal
    10. End Class

    Mit dem Beispiel sollte klar werden, das der gleiche Aufbau / das gleiche Schema für den Compiler einen Unterschied bedeutet.

    Du könntest aber ggf. das Tds-Schema der DLL in Deinem Programm nutzen. Hätte - wenn es funktioniert - auch den Vorteil, dass Du das Ganze nicht an zwei Stellen ändern müsstest, wenn es Änderungen gibt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Aber der Nachteil wäre ja, das ich nicht die Vorteile der typ. Datasets habe. Oder täusche ich mich?
    ____________________________________________________________________________________
    Okay hab es jetzt hinbekommen. Ich kann ja direkt auf das Dataset der Klassenbibliothek zugreifen. Hab jetzt alles auf dieses Dataset geschrieben. Jetzt funktioniert es. Nochmal Danke an @VaporiZed , dank deines Denkanstoßes bin ich drauf gekommen ^^

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