Sto cercando di individuare l'approccio migliore per l'impostazione e il recupero delle proprietà in una classe nidificata che sto creando.Classe nidificata Metodi di accesso per le proprietà in .NET
Ho una classe, Car che ha una classe nidificata ControlPanel e desidera rendere le proprietà del Pannello di controllo accessibili solo per la classe Car e Pannello di controllo.
(vale a dire: non all'interno dell'assembly o del namespace e non all'interno dell'applicazione verrà utilizzata la libreria di classi) ... Ho modificato le proprietà di accesso di classe ad amici, amici protetti, privati, pubblici, ma qualsiasi la combinazione non corrisponde ai risultati attesi.
Desidero modificare le proprietà nel sotto Drive() di una classe come mostrato di seguito.
Qualche idea?
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
Puoi espandere la tua domanda? Vuoi che * l'intera classe ControlPanel * sia inaccessibile, o vuoi * solo che queste due proprietà * siano inaccessibili, da qualsiasi classe diversa da Car? Inoltre, il tuo codice sembra suggerire di volere un accesso diverso per il getter e setter, ma non lo dichiari chiaramente nella domanda. Vuoi un accesso diverso anche per getter e setter? – Cheeso
Si scusa per la confusione. Quello che mi piacerebbe vedere è che il ControlPanel sia di sola lettura al di fuori della classe Car, ma Read/Write nelle classi Car e Control Panel. –
Sulla base di quel commento, quello che penso tu stia cercando è quello che avevo suggerito con una classe nidificata privata che ha un'interfaccia pubblica (o di un amico). Ciò garantirà che la classe Car possa accedere a tutti i membri su ControlPanel, ma l'esterno rimarrà solo su un riferimento di IControlPanel che esporrà solo l'ottiene. Se qualcosa di diverso da Car può insanire la classe ControlPanel, potrebbe essere necessario un qualche metodo di fabbrica (Crea) che restituisca IControlPanel. –