Tôi biết không thể kế thừa các hàm tạo trong C#, nhưng có lẽ có một cách để làm những gì tôi muốn làm.C#: kế thừa các hàm tạo
Tôi có một lớp cơ sở được thừa kế bởi nhiều lớp khác và có phương thức Init
thực hiện một số tham số khởi tạo tham số 1. Tất cả các lớp kế thừa khác cũng cần khởi tạo này, nhưng tôi cần phải tạo các hàm tạo riêng cho tất cả chúng như sau:
public Constructor(Parameter p) {
base.Init(p);
}
Điều đó hoàn toàn vi phạm nguyên tắc DRY! Làm thế nào tôi có thể có tất cả các công cụ cần thiết khởi tạo mà không tạo ra hàng chục nhà xây dựng?
Tệ hơn vi phạm nguyên tắc DRY đang vi phạm nguyên tắc bất biến. 'Init' như tên của một phương thức thường là một dấu hiệu mạnh mẽ rằng các đối tượng không cần thiết tồn tại trong các trạng thái không hợp lệ, nơi điều duy nhất chúng tốt cho là gây ra lỗi. –
C# không thực sự tuân theo DRY. Điều này có thể khó chịu nhưng ... thành thật mà nói, bạn không thể nói với tôi rằng bạn không mệt mỏi khi gõ 'public',' protected', và 'private' hơn và hơn và hơn? –
@ SlippD.Thompson: Đó là một lĩnh vực khác mà C++ thực sự là * ít hơn * wordy hơn các ngôn ngữ dễ dàng hơn ... Cái trước tôi vừa thấy là liên quan đến việc trưng ra các hàm tạo cơ sở trong một lớp dẫn xuất. –