Instanz einer Klasse erzeugen lassen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Instanz einer Klasse erzeugen lassen

    Also ersteinmal Hallo und nun zu meiner Frage bzw. dem Problem...


    Also ich habe mir eine Funktion geschrieben um zu überprüfen ob eine Datei existiert und wenn die Datei existiert soll er die angegebene Funktion aus der Klasse aufrufen die ebenfalls angegeben wurde, nur leider klappt das irgendwie nicht da ich nicht weiß wie ich das machen soll das er aus denn Variablen eine neue Instanz der Klasse erzeugt.

    Ich habe ja das angegeben...

    VB.NET-Quellcode

    1. Dim ClassToCall As New Klasse
    2. ClassToCall.FunctionToCall()


    Mit diesem aufruf...

    VB.NET-Quellcode

    1. ValidateToCall("C:\Programme\Programm\Programm.exe", "Programm", "GetFileSize", "Die Datei wurde nicht gefunden.")


    Sollte er dann halt sowas erzeugen...

    VB.NET-Quellcode

    1. Dim ClassToCall As New Programm
    2. ClassToCall.GetFileSize()


    Funktion

    VB.NET-Quellcode

    1. Public Function ValidateToCall(ByVal Datei As String, ByVal Klasse As String, ByVal Funktion As String, ByVal Fehler As String)
    2. If File.Exists(Datei) Then
    3. ' Datei existiert...
    4. Dim ClassToCall As New Klasse
    5. ClassToCall.FunctionToCall()
    6. Else
    7. ' Datei existiert nicht...
    8. MessageBox.Show(Fehler, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    9. End If
    10. End Function


    Aufbau

    VB.NET-Quellcode

    1. ValidateToCall("DATEI", "KLASSE", "FUNKTION", "FEHLERMELDUNG")



    Wie mache ich es nun das er die Variablen Klasse und Funktion verwendet um dann eine neue Instanz zu erzeugen und ClassToCall.FUNKTION() aufzurufen ?
    Hi, ich hätte da ein Workaround für dich:

    VB.NET-Quellcode

    1. Dim cls as Object
    2. Public Function ValidateToCall(ByVal Datei As String, ByVal Klasse As String, ByVal Funktion As String, ByVal Fehler As String)
    3. If IO.File.Exists(Datei) Then
    4. ' Datei existiert...
    5. Select Case Klasse
    6. Case "Klasse1"
    7. cls = New Klasse1
    8. Case "Klasse2"
    9. cls = New Klasse2
    10. End Select
    11. If Not IsNothing(cls) Then
    12. Select Case Funktion
    13. Case "Funktion1"
    14. cls.Funktion1()
    15. Case "Funktion2"
    16. cls.Funktion2()
    17. End Select
    18. End If
    19. Else
    20. ' Datei existiert nicht...
    21. MessageBox.Show(Fehler, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    22. End If
    23. Return Nothing
    24. End Function


    Solange du deine Klassen und deine Funktionen kennst könnts so ähnlich gehn. Am sonsten müsstest du anders vorgehen, das wär aber dann ein anderes und umfangreicheres Thema.

    //BEARBEITET
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    So würde er ja für eine Datei das ganze überprüfen aber wenn ich die Funktion verwenden sind es ja immer andere Werte bei den variablen Datei, Klasse und Funktion und somit werden ja auch immer andere Klassen und Funktionen angesprochen.

    Also wenn ich z.B. 10 verschiedene Executables habe sieht es ja so aus

    VB.NET-Quellcode

    1. ValidateToCall("C:\Programme\Programm\Programm01.exe", "Programm01", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    2. ValidateToCall("C:\Programme\Programm\Programm02.exe", "Programm02", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    3. ValidateToCall("C:\Programme\Programm\Programm03.exe", "Programm03", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    4. ValidateToCall("C:\Programme\Programm\Programm04.exe", "Programm04", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    5. ValidateToCall("C:\Programme\Programm\Programm05.exe", "Programm05", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    6. ValidateToCall("C:\Programme\Programm\Programm06.exe", "Programm06", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    7. ValidateToCall("C:\Programme\Programm\Programm07.exe", "Programm07", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    8. ValidateToCall("C:\Programme\Programm\Programm08.exe", "Programm08", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    9. ValidateToCall("C:\Programme\Programm\Programm09.exe", "Programm09", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")
    10. ValidateToCall("C:\Programme\Programm\Programm10.exe", "Programm10", "EINE FUNKTION NUR FÜR DIESES PROGRAMM", "Die Datei wurde nicht gefunden.")


    Da immer eine andere klasse mit anderen funktionen angesprochen bzw. verwendet wird kann ich das mit dem Code so garnicht machen oder ?

    //Ach lol sorry, hab denn Code nu verstanden hatte da was durcheinander gebracht :rolleyes: Also vielen dank nochmal