2014-11-07 64 views
5

Làm thế nào một lớp dẫn xuất có thể gọi một phương thức từ một lớp cơ sở.
Các lớp khác không nên có quyền truy cập.
Gọi một phương thức cơ sở riêng từ một lớp dẫn xuất trong C#

tình hình của tôi:
Tôi có một lớp cơ sở, trong Mà tôi đã viết một phương pháp riêng để đăng ký một số giá trị.

private void register(string param1, int param2){//...} 

Tôi đã làm điều này để cho phép các lớp con đăng ký các nội dung khác nhau.
Vấn đề là, một lớp dẫn xuất không thể truy cập các phương thức riêng hoặc các trường của một lớp cơ sở.
Điều đó có ý nghĩa đối với tôi, vì tư nhân có nghĩa là TƯ NHÂN.

Tôi không muốn đặt phương thức này ở chế độ công khai vì các lớp khác sẽ không thể gọi phương thức này.
Ai đó có thể cung cấp giải pháp hoặc hướng dẫn tôi hướng tới thiết kế tốt hơn không?

+11

làm cho nó 'protected'? – AlexD

+0

Ôi trời! Tôi luôn nghĩ rằng được bảo vệ sẽ không cho phép truy cập từ các gói khác. (Đó là trong Java chỉ tôi đoán ...) Viết nó như là câu trả lời và tôi sẽ chấp nhận nó. : D –

+1

Không, đó là 'nội bộ', bạn thậm chí có thể kết hợp hai' nội bộ được bảo vệ' cho phép truy cập từ các lớp dẫn xuất và bất kỳ lớp nào trong cùng một assembly. –

Trả lời

14

Khi bạn khai báo điều gì đó riêng tư, chỉ có lớp xác định nó mới có thể truy cập. Thậm chí không có nguồn gốc lớp

gì bạn cần là protected

Khi một cái gì đó được khai báo là protected nó có thể được truy cập bởi bất kỳ lớp được thừa kế ẩn trong hệ từ các lớp khác không liên quan

Các vấn đề liên quan