Tôi đang cố gắng tìm ra cách tiếp cận tốt nhất để thiết lập và nhận các thuộc tính trong một lớp lồng nhau mà tôi đang tạo.Lớp lồng nhau Các phương thức truy cập cho các thuộc tính trong .NET
Tôi có một lớp, Ô tô có lớp lồng nhau ControlPanel và muốn làm cho các thuộc tính của Bảng điều khiển chỉ có thể truy cập vào lớp Ô tô và Bảng điều khiển.
(ví dụ: không nằm trong vùng lắp ráp hoặc không gian tên và không nằm trong thư viện lớp học sẽ được sử dụng) ... Tôi đã thay đổi thuộc tính truy cập lớp cho bạn bè, bạn bè được bảo vệ, riêng tư, công khai, nhưng bất kỳ kết hợp không phù hợp với kết quả mong đợi của tôi.
Tôi muốn thay đổi thuộc tính trong Drive() Sub của một lớp như được hiển thị bên dưới.
Mọi suy nghĩ?
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
Bạn có thể mở rộng câu hỏi của mình không? Bạn có muốn * toàn bộ lớp ControlPanel * không thể truy cập được không, hoặc bạn có muốn * chỉ có hai thuộc tính * đó là không thể truy cập được, từ bất kỳ lớp nào khác ngoài Car? Ngoài ra, mã của bạn dường như đề nghị bạn muốn truy cập khác nhau cho getter và setter, nhưng bạn không nói rõ điều này trong câu hỏi. Bạn có muốn truy cập khác nhau cho getter và setter? – Cheeso
Xin lỗi vì sự nhầm lẫn. Những gì tôi muốn thấy là ControlPanel được đọc chỉ từ bên ngoài lớp Car, nhưng Read/Write trong các lớp Car và Control Panel. –
Dựa trên nhận xét đó, những gì tôi nghĩ rằng bạn đang tìm kiếm là những gì tôi đã đề xuất với một lớp lồng nhau tư nhân có một giao diện công cộng (hoặc bạn bè). Điều đó sẽ đảm bảo rằng lớp Car có thể truy cập tất cả các thành viên trên ControlPanel, nhưng bên ngoài sẽ chỉ giữ một tham chiếu của IControlPanel mà sẽ chỉ phơi bày được. Nếu một cái gì đó khác hơn là xe có thể insantiate lớp ControlPanel, bạn có thể cần một số hình thức của nhà máy phương pháp (Tạo) mà trả về IControlPanel. –