我想弄清楚在我創建的嵌套類中設置和獲取屬性的最佳方法。.NET中屬性的嵌套類訪問方法
我有一個類,汽車有一個嵌套類ControlPanel,並希望使控制面板的屬性只能訪問汽車和控制面板類。
(即:不在程序集或命名空間內,不在應用程序內,類庫將被使用)...我已將類訪問屬性更改爲朋友,受保護的朋友,私人,公共,但任何組合不符合我的預期結果。
我想改變Drive()子類中的屬性,如下所示。
有什麼想法?
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以外的任何類訪問?另外,你的代碼似乎表明你希望獲得不同的getter和setter訪問權限,但是在這個問題中你沒有清楚地說明這一點。你想爲getter和setter設置不同的訪問權限嗎? – Cheeso 2011-01-20 02:34:20
爲混淆道歉。我想看到的是ControlPanel只能從Car類外部讀取,而在Car和Control Panel類中則是Read/Write。 – 2011-01-20 03:09:34
根據該評論,我認爲你正在尋找的是我所建議的具有公共(或朋友)接口的私有嵌套類。這將確保Car類可以訪問ControlPanel上的所有成員,但外部只會保留只會暴露獲取的IControlPanel的引用。如果Car以外的東西可以檢驗ControlPanel類,則可能需要某種形式的工廠方法(Create),它返回IControlPanel。 – 2011-01-20 13:55:27