Übergabe von Objekten die nicht defniert sind - vbNull ??ß

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Übergabe von Objekten die nicht defniert sind - vbNull ??ß

    Moin !

    vor der Mittagspause habe ich noch so eine "Spaßbremse" vor mir...

    Es geht darum das ich mehrere Funktionsüberschreibungen machen möchte und nur bei der einen Variante wir ein As Report_Einfach übergeben. Hier zunächst mein Ansatz:

    VB.NET-Quellcode

    1. Public Function XYZ(ByVal VermData As Double, Type As VermessungTypXYZ) As Double
    2. Return XYZ_Work(VermData, Type, vbNull, False)
    3. End Function
    4. Public Function XYZ(ByVal VermData As String, Type As VermessungTypXYZ) As Double
    5. Return XYZ_Work(VermData, Type, null, False)
    6. End Function
    7. Public Function XYZ(ByVal VermData As String, ByVal Type As VermessungTypXYZ, ByVal Report As EBL.Service.Report_Einfach, ByVal Silent As Boolean) As Double
    8. Return XYZ_Work(VermData, Type, Report, Silent)
    9. End Function
    10. ' Arbeitsfunktion
    11. Public Function XYZ_Work(ByVal VermData As String, ByVal Type As VermessungTypXYZ, ByVal Report As EBL.Service.Report_Einfach, ByVal Silent As Boolean) As Double
    12. Dim Ergebnis As Double


    Ich hatte mir bei den ersten Funktionsdefinitionen überlegt stattdessen ein vbNull an die "Arbeitsfunktion" zu übergeben - weil Report_Einfach kein vbNull verarbeiten kann.

    Kann mir einer verraten, wie ich das lösen sollte ?

    Gruß Jan
    Ich habe mir das jetzt mehrmals durchgelesen und verstehe deine Frage einfach nicht bzw was du erreichen willst? Methodenüberladung dient dazu eine Methode anders zu parametrieren, wenn deine Arbeitsfunktion keine andere Parametrierung unterstützt kannst du das nicht überladen ohne auch die Arbeitsfunktion anzupassen.

    Versuch einfach noch mal besser zu beschreiben was du erreichen möchtest..
    Moin !

    erst einmal vielen Dank für die Rückmeldung.

    Dann will ich es einmal versuchen besser zu beschreiben:

    In der Arbeitsfunktion soll es die Möglichkeit geben etwas an eine Protokoll-Funktion (ByVal Report As EBL.Service.Report_Einfach,) zu übergeben. Wenn das zugehörige Objekt definiert ist, dann soll eine Ausgabe an die Protokoll-Funktion erfolgen:

    VB.NET-Quellcode

    1. If Not IsNothing(Report) Then
    2. Report.AddMeldung("meine Meldung")
    3. End If

    (So stelle ich mir das vor - noch nicht ausgetestet)

    Wie im ersten Posting eingefügt gibt es mehrere Funktionen die keine Report-Objekt übergegben solle - nur die eine letzte Überschreibung gibt auch ein Report-Objekt an meine Arbeitsfunktion.

    Wenn ich in einer der vorangegangen Funktionen dann den Aufruf der Arbeitsfunktion vornehme in der Form:

    VB.NET-Quellcode

    1. XYZ_Work(VermData, Type, vbNull, True)


    Dann bekomme ich eine Meldung:


    Der Wert vom Typ "Microsoft.VisualBasic.VariantType" kann nicht in "EBL.Service.Report_Einfach" konvertiert werden.
    Methodenstub für "XYZ_Work" in "EBL.MapService.Validierung" generieren


    Dieses bekomme ich angezeigt, wenn ich den Unterkringelung bei "vbNull" abfrage.

    ... ist das etwas verständlicher ??

    Gruß Jan