Tôi có một dự án mà Ninject được sử dụng làm thùng chứa IoC. Mối quan tâm của tôi là rất nhiều lớp học có loại đó của cấu trúc:Tiêm phụ thuộc lười biếng
[Inject]
public HomeController(
UserManager userManager, RoleManager roleManager, BlahblahManager blahblahManager) {
_userManager = userManager;
_roleManager = roleManager;
_blahblahManager = blahblahManager;
}
gì nếu tôi không muốn có tất cả các trường hợp của các lớp này cùng một lúc?
Cách thức, khi tất cả các lớp học này được bao bọc bởi Lazy<T>
và được truyền cho nhà xây dựng không chính xác những gì tôi cần. Các phiên bản T
chưa được tạo nhưng Lazy<T>
trường hợp đã được lưu trữ trong bộ nhớ.
Đồng nghiệp của tôi đề xuất tôi sử dụng mẫu Nhà máy để kiểm soát tất cả các cảnh báo, nhưng tôi không chắc chắn rằng IoC có lỗi thiết kế tuyệt vời như vậy.
Có cách giải quyết nào cho tình huống này hay IoC thực sự có khiếm khuyết lớn như vậy trong thiết kế của nó? Có lẽ tôi nên sử dụng một container IoC?
Mọi đề xuất?
Điều gì thực sự là vấn đề của bạn? Tại sao bạn không muốn những trường hợp này? –
Tôi có thể muốn UserManager trong quá trình hoạt động của bộ điều khiển, nhưng không cần RoleManager và ngược lại. Nếu bạn nói về các trường hợp Lazy, thì đây không phải là vấn đề lớn để có chúng trong bộ nhớ, nhưng đây có phải là cách duy nhất không? –
xwrs
Tại sao nó là một việc lớn đối với 'UserManager' và' RoleManager'? Các nhà xây dựng của bạn không nên làm việc nặng. –