Mehrere Klassen in einer New Klasse

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    Mehrere Klassen in einer New Klasse

    Ich habe eine Klasse die mit New geladen wird. In dieser Klasse befinden sich wiederrum Unterklassen. Nun möchte ich die Unterklassen nur angezeigt bekommen wenn die Hauptklasse mit New beginnt.

    Also so meine ich das.

    VB.NET-Quellcode

    1. Dim locFileInfo As New FileInfo("C:\temp\Datei.exe")
    2. MessageBox.Show(locFileInfo.Size.MB)


    MB ist hier eine Eigenschaft der Klasse Size
    Hey,
    ganz einfach eine Eigenschaft oder eine Variable mit dem Public-Zugriffmodifikator deklarieren:

    VB.NET-Quellcode

    1. Public Size As Integer

    MfG,
    -haiyyu

    haiyyu schrieb:

    Hey,
    ganz einfach eine Eigenschaft oder eine Variable mit dem Public-Zugriffmodifikator deklarieren:

    VB.NET-Quellcode

    1. Public Size As Integer

    MfG,
    -haiyyu
    Ich glaub du hast den ersten Beitrag nicht ganz gelesen. In der New Klasse FileInfo befindet sich eine Unterklasse Size und diese besitzt mehrere Eigenschaften, z.B. KB, MB, GB
    Hey,
    dann probier's mal so:

    VB.NET-Quellcode

    1. Public Class MyClass
    2. Private _Size As FileSize
    3. Private _File As String
    4. Private Sub SetSizeObject()
    5. Dim ByteSize As Integer = System.IO.File.ReadAllText(_File).Length
    6. _Size = New FileSize()
    7. _Size.MB = Math.Floor(ByteSize / 1024 / 1024)
    8. _Size.KB = Math.Floor(ByteSize / 1024)
    9. _Size.B = ByteSize
    10. End Sub
    11. Public ReadOnly Property Size() As FileSize
    12. Get
    13. Return _Size
    14. End Get
    15. End Property
    16. Public Property File() As String
    17. Get
    18. Return _File
    19. End Get
    20. Set (ByVal value As Integer)
    21. _File = value
    22. SetSizeObject()
    23. End Set
    24. End Property
    25. Public Sub New(ByVal __File As String)
    26. _File = __File
    27. SetSizeObject()
    28. End Sub
    29. End Class
    30. Public Class FileSize
    31. Public MB As Integer
    32. Public KB As Integer
    33. Public B As Integer
    34. End Class
    35. ' Aufruf:
    36. Dim MyFileInfo As New MyClass("Datei.txt")
    37. MessageBox.Show(MyFileInfo.Size.MB.ToString() & "MB")

    MfG,
    -haiyyu

    haiyyu schrieb:

    Hey,
    dann probier's mal so:

    VB.NET-Quellcode

    1. Public Class MyClass
    2. Private _Size As FileSize
    3. Private _File As String
    4. Private Sub SetSizeObject()
    5. Dim ByteSize As Integer = System.IO.File.ReadAllText(_File).Length
    6. _Size = New FileSize()
    7. _Size.MB = Math.Floor(ByteSize / 1024 / 1024)
    8. _Size.KB = Math.Floor(ByteSize / 1024)
    9. _Size.B = ByteSize
    10. End Sub
    11. Public ReadOnly Property Size() As FileSize
    12. Get
    13. Return _Size
    14. End Get
    15. End Property
    16. Public Property File() As String
    17. Get
    18. Return _File
    19. End Get
    20. Set (ByVal value As Integer)
    21. _File = value
    22. SetSizeObject()
    23. End Set
    24. End Property
    25. Public Sub New(ByVal __File As String)
    26. _File = __File
    27. SetSizeObject()
    28. End Sub
    29. End Class
    30. Public Class FileSize
    31. Public MB As Integer
    32. Public KB As Integer
    33. Public B As Integer
    34. End Class
    35. ' Aufruf:
    36. Dim MyFileInfo As New MyClass("Datei.txt")
    37. MessageBox.Show(MyFileInfo.Size.MB.ToString() & "MB")

    MfG,
    -haiyyu
    Danke so ähnlich hatte ich es mir auch vorgestellt, aber jetzt bleibt nur noch ein Problem und zwar die Klasse FileSize darf nicht aufgerufen werden, also momentan kann man die Klasse so aufrufen.

    VB.NET-Quellcode

    1. Projekt.FileInfo.FileSize


    Und das soll unterbunden werden.
    Eigentlich steht alles schon im ersten Beitrag.

    Also nochmal. Ich hab eine Klasse FileInfo. Diese liefert Dateiinformationen über eine gewünschte Datei. Und in dieser Klasse habe ich eine Unterklasse namens FileSize und diese besitzt folgende Eigenschaften:
    • B
    • KB
    • MB
    • GB
    • TB
    Die Klasse FileSize soll nicht mit folgendem Code aufrufbar sein.

    VB.NET-Quellcode

    1. Projekt.FileInfo.FileSize


    FileSize soll lediglich aufrufbar sein, wenn man folgenden Code verwendet. FileInfo hat die Eigenschaft Size und durch diese soll die Unterklasse aufgerufen werden.

    VB.NET-Quellcode

    1. Dim locFileInfo As New FileInfo("C:\temp\setup.exe")
    2. MessageBox.Show(locFileInfo.Size.MB)
    Du könntest mit Properties arbeiten. Du erstellst eine Klasse (oder Structur) FileSize und fügst diese in deine Klasse ein (mit New). Danach schreibst du noch ein Property, mit dem du dann auf diese Klasse zugreifen kannst:

    VB.NET-Quellcode

    1. Public Structur FileSize
    2. 'blablabla
    3. End Sub
    4. Public Class FileInfo
    5. Private _FileSize as New FileSize(...)
    6. Public Property FileSize as FileSize
    7. Get
    8. Return _FileSize
    9. End Get
    10. Set (byval value as FileSize)
    11. _FileSize = value
    12. End Set
    13. End Property


    Alteran

    Alteran schrieb:

    Du könntest mit Properties arbeiten. Du erstellst eine Klasse (oder Structur) FileSize und fügst diese in deine Klasse ein (mit New). Danach schreibst du noch ein Property, mit dem du dann auf diese Klasse zugreifen kannst:

    VB.NET-Quellcode

    1. Public Structur FileSize
    2. 'blablabla
    3. End Sub
    4. Public Class FileInfo
    5. Private _FileSize as New FileSize(...)
    6. Public Property FileSize as FileSize
    7. Get
    8. Return _FileSize
    9. End Get
    10. Set (byval value as FileSize)
    11. _FileSize = value
    12. End Set
    13. End Property


    Alteran
    Danke. Das habe ich gesucht. Jetzt kann man die Klasse von außen immer noch aufrufen, aber man sieht nicht mehr die Eigenschaften. Und das soll auch so sein.

    singu schrieb:

    Jetzt kann man die Klasse von außen immer noch aufrufen, aber man sieht nicht mehr die Eigenschaften.

    Bitte??
    Ich dachte du hast gesagt:
    zwar die Klasse FileSize darf nicht aufgerufen werden, also momentan kann man die Klasse so aufrufen.
    Vor allem kann man eine Klasse nicht "aufrufen". Sorry dass ich nachhake, aber ich würde gerne verstehen, was dein Problem war. Sorry, dass ich dich wohl falsch verstanden habe (was ich jetzt immer noch tue).