lau*_*tes 8 .net vb.net access-modifiers
我试图找出在我正在创建的嵌套类中设置和获取属性的最佳方法.
我有一个类,Car有一个嵌套类ControlPanel,并且想要使控制面板的属性只能访问Car和Control Panel类.
(即:不在程序集或命名空间内,不在应用程序中将使用类库)...我已将类访问属性更改为朋友,受保护的朋友,私有,公共,但任何组合都不匹配我的预期结果.
我想更改类的Drive()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
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
Public Class Car
Private Interface IControlPanel
Property Odometer As Integer
Property Speedometer As Integer
End Interface
Public Class ControlPanel
Implements IControlPanel
Public ReadOnly Property Odometer As Integer
Get
Return CType(Me, IControlPanel).Odometer
End Get
End Property
Public ReadOnly Property Speedometer As Integer
Get
Return CType(Me, IControlPanel).Speedometer
End Get
End Property
Private Property IControlPanel_Odometer As Integer Implements IControlPanel.Odometer
Private Property IControlPanel_Speedometer As Integer Implements IControlPanel.Speedometer
End Class
Dim cp As IControlPanel = New ControlPanel()
Public Sub Drive()
cp.Odometer = 76323
cp.Speedometer = 86
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
它使用嵌套在Car类中的私有接口,并在ControlPanel. 这样,只能Car访问接口成员。