Private geschachtelte Klassen

Ich soll erstellt, um eine geschachtelte Klasse, die nur sichtbar ist, und instanziiert werden von der übergeordneten Klasse.

Aber ich möchte auch in der Lage sein, um eine Instanz der geschachtelten Klasse mit einem public-Variablen der übergeordneten Klasse.

Ich habe versucht, die geschachtelte Klasse private zu machen, oder die geschachtelte Klasse' Konstruktor private, aber es wird nicht kompiliert.

Ist es möglich dies zu tun .NET?

Diese kompiliert und funktioniert, aber der geschachtelten Klasse können von jedem verwendet werden:

 Public Class OuterClass
        Public X As Integer = 123
        Public NestedClassInstance As New NestedClass(Me)

        Public Class NestedClass
            Private Parent As OuterClass

            Public Sub New(ByVal _Parent As OuterClass)
                Parent = _Parent
            End Sub

            Public Sub GetParentX()
                Debug.WriteLine("X = " & Parent.X.ToString)
            End Sub
        End Class
    End Class

    Sub Main()
        Dim OuterClassInstance As New OuterClass
        OuterClassInstance.NestedClassInstance.GetParentX()
    End Sub
  • Das einzige, was ist das Besondere an einer geschachtelten Klasse ist, dass es den Zugriff auf die enthaltende Klasse ist die private-und protected-member (vorausgesetzt, es hat eine Referenz auf eine). Ist dies der Funktionalität der verschachtelten Klasse, dass Sie sich sorgte oder wollten Sie etwas anderes tun?
  • Meistens bin ich versucht zu halten, die geschachtelte Klasse aus Intellisense, und auch eine Versicherung, dass es nicht instanziiert werden kann, außer durch die übergeordnete Klasse.
  • Zu mir, verschachtelte privaten class-Definitionen sollte nur verfügbar sein, um das halten der Klasse, in der gleichen Weise, dass private Variablen sind, dass Sie privat zu, dass eine Klasse. Aber wenn die holding-Klasse instanziiert und ordnet Sie in eine öffentliche variable innerhalb der holding Klasse, die Instanz sollte für jedermann zugänglich sind, als Feld der holding Klasse. Es scheint wie eine sehr Natürliche Objekt Verhalten zu mir. Naja.
InformationsquelleAutor mcu | 2012-06-07
Schreibe einen Kommentar