Tôi có giải pháp với hai dự án có liên quan (cho câu hỏi này) và một vài dự án khác;Tôi nên tiêm ở đâu với Ninject 2+ (và làm cách nào để sắp xếp Mô-đun của tôi?)
- Thư viện lớp học có chức năng được một số dự án khác sử dụng.
- Ứng dụng ASP.NET MVC.
Câu hỏi của tôi về cơ bản là nơi tôi nên làm IoC với Ninject 2, xem xét ...
- Thư viện lớp cần một số DI tình yêu, trong số những thứ khác trong lớp kho mà cần web phiên cụ thể theo yêu cầu đối tượng (nghĩ đơn vị công việc).
- Ứng dụng MVC cần DI kể từ khi Ninject 2 bạn về cơ bản kế thừa từ NinjectHttpApplication.
- Kiểm tra đơn vị cho thư viện lớp cần phải biết điều này để tiêm một tập hợp các kho lưu trữ khác.
- Kiểm tra đơn vị cho ứng dụng web cần phải được tiêm cùng lý do.
Tôi đã vẽ bản thân mình vào một góc tinh thần ở đây, bởi vì tôi chỉ thấy ba tùy chọn để bắt đầu. DI trong thư viện lớp, DI trong ứng dụng web, hoặc cả hai, nhưng có những vấn đề với nhau:
- tôi không thể làm DI chỉ trong thư viện lớp kể từ khi ứng dụng MVC cần phải kế thừa từ NinjectHttpApplication để bắt đầu với.
- Tôi không thể làm DI chỉ trong ứng dụng MVC - thư viện lớp được sử dụng bởi các thư viện khác, sau khi tất cả, và các ứng dụng MVC không nên biết quá nhiều về nội bộ của thư viện anyway.
- Tôi đoán đây là cách duy nhất tôi có thể thấy: IoC độc lập cho cả hai dự án. Thư viện lớp và ứng dụng MVC đều có thiết lập IoC của riêng họ và làm DI cho công cụ của họ mà không thực sự quan tâm lẫn nhau.
Có ai có một số "phương pháp hay nhất" hoặc hướng dẫn về cách thực hiện điều gì đó như thế này không? Tôi không thể tưởng tượng tôi là người đầu tiên kết thúc trong tình huống này, và chắc chắn sẽ rất hay khi biết cách "thích hợp" để làm điều này là ...
Cảm ơn!
liên quan: http://stackoverflow.com/questions/5267525/dal-bll-gui-composition-root-how-to-setup-di-bindings –
Trùng lặp với một số nhận xét đáng để khai thác để hoàn thành nếu bạn thực sự cố gắng để có được thông tin chi tiết đầy đủ http://stackoverflow.com/questions/5733591/best-location-for-fluent-ioc-configuration-modules-currently-trying-ninject –