2008-12-16 31 views
5

Hôm qua tôi nghĩ sẽ tốt hơn nếu triển khai Trigger của riêng tôi trong một ứng dụng WPF. Tôi đã tạo một lớp MyTrigger kế thừa TriggerBase. TriggerBase là một lớp trừu tượng công khai. Vì vậy, thừa kế không phải là một vấn đề. Nhưng các nhà xây dựng bên trong lớp này được đánh dấu nội bộ. Trình biên dịch ném một lỗi vì không có hàm tạo hợp lệ. Tại sao bất cứ ai tạo ra một lớp học công cộng nhưng đánh dấu các nhà thầu như nội bộ?constructor nội bộ

Trả lời

9

Nếu bạn muốn lớp hiển thị, nhưng chỉ cho phép lớp đó được phân loại trong hội đồng của riêng bạn. Các lớp con có thể có các hằng số công khai - hoặc chúng có thể được truy cập với một nhà máy.

Tôi không thể bình luận về việc đó là một quyết định thiết kế tốt cho TriggerBase trong WPF, nhưng ít nhất là hợp lý trong một số trường hợp.

5

Một lý do mà tôi có thể nghĩ là việc tạo ra thực tế các cá thể mới sẽ được xử lý bởi một lớp công khai khác trong cùng một hội đồng. Điều này sẽ buộc bạn tạo ra cá thể thông qua lớp khác này - có thể là một số kiểu triển khai thực hiện mẫu nhà máy.

2

Công khai vì nó được sử dụng làm lớp cơ sở cho trình kích hoạt đi kèm với WPF (Trình kích hoạt, MultiTrigger, EventTrigger, DataTrigger, v.v ...). Nó không được công khai sau đó bạn sẽ không thể gắn cờ các lớp này là công khai.

Các nhà xây dựng là nội bộ bởi vì họ không có ý định để bạn sử dụng nó cho mình. Tôi đoán bạn đang giả sử bắt nguồn từ một trong các lớp được đề cập ở trên.

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