Trả lời bài đăng của riêng tôi sau một vài năm sử dụng NInject.
Sau đây là cách tôi tổ chức NInjectModules của tôi, sử dụng một cửa hàng sách là một ví dụ:
- BookStoreSolution
- Domain.csproj
- Services.csproj
- CustomerServicesInjectionModule.cs
- PaymentProcessingInjectionModule.cs
- DataAccess.csproj
- CustomerDatabaseInjectionModule.cs
- BookDatabaseInjectionModule.cs
- CustomSecurityFramework.csproj
- CustomSecurityFrameworkInjectionModule.cs
- PublicWebsite.csproj
012.
- PublicWebsiteInjectionModule.cs
- Intranet.csproj
- IntranetInjectionModule.cs
Điều này được nói là từng dự án trong hệ thống đi kèm đóng gói sẵn với một hoặc nhiều Các mô đun NInject biết cách thiết lập các ràng buộc cho các lớp của dự án đó.
Hầu hết thời gian, một ứng dụng riêng lẻ sẽ không muốn thay đổi đáng kể các mô-đun tiêm mặc định do dự án cung cấp. Ví dụ, nếu tôi đang tạo một ứng dụng WinForm nhỏ cần nhập dự án DataAccess, thông thường tôi cũng sẽ muốn có tất cả các lớp Repository <> của dự án liên kết với các giao diện IRepository <> liên kết của chúng.
Đồng thời, không có gì buộc ứng dụng cá nhân sử dụng mô-đun phun cụ thể.Một ứng dụng có thể tạo mô-đun tiêm riêng của nó và bỏ qua các mô-đun mặc định được cung cấp bởi một dự án mà nó đang nhập. Bằng cách này, hệ thống vẫn linh hoạt và tách rời.
Câu hỏi hay. Tôi muốn xem thêm thảo luận về điều này khi tôi chia sẻ mối quan tâm của bạn. Có một mô-đun cho mỗi hệ thống phụ có vẻ hợp lý, nhưng tôi cũng có các mô-đun để kết nối các phụ thuộc khác nhau đối với Kiểm thử Đơn vị. – JulianM