Objekte über Variabel instanzieren

  • VB.NET

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

    Objekte über Variabel instanzieren

    Hallo,

    ich würde gerne Objekte anhand eines in einer Combobox ausgewählten Strings erstellen. Ist sowas möglich? ?( Hier ein Beispiel wie ich mir das ungefähr Vorstelle.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Test
    2. Public MustInherit Class A
    3. End Class
    4. Public Class A1
    5. Inherits A
    6. End Class
    7. Public Class A2
    8. Inherits A
    9. End Class
    10. Private WithEvents ComboBox As ComboBox
    11. Private ObjectList As List(Of A)
    12. Public Sub New()
    13. ComboBox = New ComboBox
    14. ComboBox.Items.Add({"A1", "A2"})
    15. End Sub
    16. Private Sub ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox.SelectedIndexChanged
    17. Dim strObject As String = ComboBox.SelectedItem
    18. Dim objNew As New ??? strObject ???
    19. End Sub
    20. End Class


    Gruß
    JOE
    @JoachimStein Ist eigentlich ganz einfach.
    Sorge dafür, dass in der ComboBox die Typen (!!!) der Klassen stehen, die Du instanziieren willst. Mach das über ein
    Sorge dafür, dass diese Klassen parameterlose Konstruktoren haben.
    Dann kannst Du über Activator.CreateInstance(DEIN_TYP) eine Instanz der Klasse erstellen.
    docs.microsoft.com/de-de/dotne…framework-4.7.2#overloads
    =====================

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. ComboBox1.Items.Add(GetType(A1))
    4. ComboBox1.Items.Add(GetType(A2))
    5. ComboBox1.SelectedIndex = 0
    6. End Sub
    7. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    8. Dim var As Object = Activator.CreateInstance(CType(ComboBox1.SelectedItem, Type))
    9. Dim var2 = CType(var, A)
    10. MessageBox.Show(var2.ToString())
    11. End Sub
    12. End Class
    13. Public MustInherit Class A
    14. End Class
    15. Public Class A1
    16. Inherits A
    17. Public Overrides Function ToString() As String
    18. Return "Klasse A1"
    19. End Function
    20. End Class
    21. Public Class A2
    22. Inherits A
    23. Public Overrides Function ToString() As String
    24. Return "Klasse A2"
    25. End Function
    26. End Class

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RodFromGermany“ ()