Я пытаюсь найти лучший подход для настройки и получения свойств во вложенном классе, который я создаю.Вложенные классы Способы доступа для свойств в .NET
У меня есть класс, автомобиль, который имеет вложенный класс ControlPanel и хочет, чтобы свойства панели управления были доступны только классу Car and Control Panel.
(т. Е. Не внутри сборки или пространства имен, а не внутри приложения, будет использоваться библиотека классов) ... Я изменил свойства доступа класса к другу, защищенному другу, частному, общедоступному, но любой комбинация не соответствует моим ожидаемым результатам.
Я хочу изменить свойства в Sub() Sub класса, как показано ниже.
Любые мысли?
Public Class Car
Dim cp As New ControlPanel
Public Class ControlPanel
Private _Speedometer As Integer = 0
Private _Odometer As Integer = 0
Public Property Speedometer() As Integer
Get
Return _Speedometer
End Get
Protected Set(ByVal value As Integer)
_Speedometer = value
End Set
End Property
Public Property Odometer() As Integer
Get
Return _Odometer
End Get
Protected Set(ByVal value As Integer)
_Odometer = value
End Set
End Property
End Class
Public Sub Drive()
cp.Odometer = 76323
co.Speedometer = 86
End Sub
End Class
Вы можете добавить свой отзыв? Вы хотите, чтобы * весь класс ControlPanel * был недоступен или вы хотите, чтобы * только те два свойства * были недоступны, из любого класса, кроме Car? Кроме того, ваш код, по-видимому, предполагает, что вам нужен другой доступ для геттера и сеттера, но вы не сформулируете это четко в вопросе. Вам нужен другой доступ для геттера и сеттера? – Cheeso
Извиняется за замешательство. То, что я хотел бы видеть, - это ControlPanel для чтения только вне класса Car, но чтение/запись в классах Car and Control Panel. –
Основываясь на этом комментарии, то, что я думаю, что вы ищете, - это то, что я предложил с помощью частного вложенного класса, который имеет открытый (или дружественный) интерфейс. Это гарантирует, что класс Car может получить доступ ко всем членам ControlPanel, но внешняя сторона будет поддерживать только ссылку IControlPanel, которая будет раскрывать только данные. Если что-то, кроме Car, может навязать класс ControlPanel, вам может понадобиться какой-то метод фабрики (Create), который возвращает IControlPanel. –