我想弄清楚在我创建的嵌套类中设置和获取属性的最佳方法。.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