Tôi có 2 lớp chung, một Lớp BaseComponent
và lớp BaseManager
.thông số chung loại tròn
Cả hai đều trừu tượng và được dự định sẽ được làm cụ thể.
public abstract class BaseManager<T> where T : BaseComponent<?>
public abstract class BaseComponent<T> where T : BaseManager<?>
BaseManager
có một danh sách các BaseComponents, đó là lý do tôi muốn làm cho nó chung chung, do đó, một PhysicsManager : BaseManager<PhysicsComponent>
sẽ có một danh sách PhysicsComponents
.
Tôi muốn (hoặc đúng hơn, nghĩ rằng tôi cần) BaseComponent
là chung chung vì tôi chỉ muốn các lớp học bắt nguồn từ BaseComponent
để được 'đính kèm' với người quản lý phù hợp của họ. Lý tưởng nhất là tôi không muốn phải viết một hàm tạo cho mỗi thành phần dẫn xuất chỉ vì vậy tôi có thể thêm nó vào một lớp quản lý cụ thể được truyền vào. Lý tưởng nhất là tôi muốn có một nhà xây dựng có lớp trừu tượng BaseManager
.
Tôi làm cách nào để quản lý loại phụ thuộc vòng tròn này?
Tôi rất muốn xem xét thiết kế lại để tránh sự phụ thuộc vòng tròn. Ví dụ, làm cho 'BaseComponent' không chung chung. Có nó phụ thuộc vào một 'IManager'. Đặt dàn diễn viên từ 'BaseComponent' vào' TComponent' trong 'BaseManager' –
Tôi đồng ý rằng nó hơi có mùi như Jon đã chỉ ra, nhưng tôi không thực sự tuân theo. Nếu 'BaseComponent' phụ thuộc vào' IManager', làm cách nào tôi đảm bảo rằng tất cả các lớp dẫn xuất của 'BaseComponent' có một hàm tạo chấp nhận việc triển khai thực hiện' IManager' chính xác để tôi có thể thêm nó vào danh sách của Manager? Nếu bạn đã có thời gian, tôi sẽ đánh giá cao việc xây dựng một câu trả lời. –