Ich versuche, den besten Ansatz zum Festlegen und Abrufen von Eigenschaften in einer geschachtelten Klasse, die ich erstelle, herauszufinden.
Ich habe eine Klasse, Car, die eine geschachtelte Klasse ControlPanel hat und möchte, dass die Eigenschaften der Systemsteuerung nur für die Auto- und Systemsteuerung verfügbar sind.
(dh nicht innerhalb der Assembly oder des Namespaces und nicht innerhalb der Anwendung wird die Klassenbibliothek verwendet) ... Ich habe die Klassenzugriffseigenschaften in "Freund", "Geschützter Freund", "Privat", "Öffentlich", aber in beliebiger Kombination geändert stimmt nicht mit meinen erwarteten Ergebnissen überein.
Ich möchte die Eigenschaften in der Drive () Sub einer Klasse ändern, wie unten gezeigt.
Irgendwelche Gedanken?
%Vor%Wie Robert Levy darauf hingewiesen hat, beziehen Sie sich auf eine "Nested Class" und nicht auf eine "Subclass" usw.
Wie Sie erreichen, wonach Sie suchen ... möchten Sie ControlPanel zu einer privaten Klasse machen? Dadurch wird sichergestellt, dass alle Mitglieder von ControlPanel nur für Auto erreichbar sind. Wenn Sie andere Elemente auf ControlPanel haben, die verfügbar gemacht werden müssen, oder die Außenwelt einen Verweis auf ControlPanel speichern muss, sollten Sie eine Schnittstelle verwenden, um nur diejenigen Elemente verfügbar zu machen, die öffentlich verfügbar sein sollen.
%Vor%Optional ...
%Vor%Was ist das Ziel, das Sie in Bezug auf API erreichen möchten?
Lassen Sie uns zuerst die Terminologie klären. Worüber Sie hier sprechen, ist eine "verschachtelte" Klasse und keine Unterklasse
Ich glaube nicht, was Sie versuchen, ist in .NET möglich. Aber brauchst du das wirklich? Wenn cp im Auto privat ist, kann niemand den Kilometerzähler am Steuerpult des Autos erhöhen. Sie könnten ihr eigenes Kontrollpanel erstellen, das nicht Teil eines Autos ist und sich dann damit anlegen, aber was ist daran schaden?
Machen Sie Ihre ControlPanel
-Klasse privat und ihre Eigenschaften öffentlich. Die Klasse ControlPanel
ist dann nur für den Typ Car
sichtbar, aber Car
kann weiterhin die Eigenschaften von ControlPanel
ändern.
geschachtelte Klassen ist eine Möglichkeit zu gehen oder Sie können Ihr Auto als eine zusammengesetzte Klasse haben. Control Panel kann in vielen verschiedenen Autos (Unterklassen) verwendet werden, warum also verschachtelt? Das Auto hat ein Control Panel. Auto hat einen Motor
Bus: Auto hat auch diese Dinge.
Radio könnte etwas sein, das die Systemsteuerung hat. Tachometer könnte Teil des Dashboards sein, das auch Teil der Systemsteuerung sein könnte.
Dann enden Sie mit
MyCar.ItsControlPanel.Radio MyCar.ItsControlPanel.Dashboard.Speedometer.CurrentSpeed;
Wie wäre es mit Motorrad? Es ist kein Auto, aber es hat immer noch ein Dashboard mit einem Tachometer.
Holen Sie meinen Punkt? Zusammengesetzte Objekte.
Tags und Links .net vb.net access-modifiers