Tôi biết một số khung công tác DI hỗ trợ điều này (ví dụ: Ninject), nhưng tôi đặc biệt muốn biết liệu điều đó có thể thực hiện được với Autofac hay không.Autofac có thể tự động ràng buộc không?
Tôi muốn có thể yêu cầu một thùng chứa Autofac cho một lớp bê tông và lấy lại một cá thể với tất cả các phụ thuộc hàm dựng thích hợp được tiêm, mà không bao giờ đăng ký lớp bê tông đó. Tức là, nếu tôi không bao giờ ràng buộc nó một cách rõ ràng, sau đó tự động ràng buộc lớp bê tông cho chính nó, như thể tôi đã gọi builder.Register<MyClass>();
Một ví dụ tốt về khi điều này sẽ có ích được ViewModels. Trong MVVM, phân lớp là như vậy mà chỉ View phụ thuộc vào ViewModel, và rằng thông qua gõ lỏng lẻo, và bạn không đơn vị kiểm tra xem anyway. Vì vậy, không cần phải giả lập ViewModel để kiểm tra - và do đó không có lý do gì để có một giao diện cho mỗi ViewModel. Vì vậy, trong trường hợp này, mẫu DI thông thường của "đăng ký giao diện này để giải quyết cho lớp này" là sự phức tạp không cần thiết. Rõ ràng tự ràng buộc, như builder.Register<MyClass>();
, cũng cảm thấy giống như một bước không cần thiết khi đối phó với một cái gì đó đơn giản như một lớp cụ thể.
Tôi biết về số reflection-based registration example trong tài liệu Autofac, nhưng đó cũng không phải là sở thích của tôi. Tôi không muốn sự phức tạp (và chậm chạp) của việc đăng ký mọi lớp học có thể trước thời hạn; Tôi muốn khung làm việc cho tôi những gì tôi cần khi tôi cần. Công ước về cấu hình, và tất cả điều đó.
Có cách nào để định cấu hình Autofac để có thể nói "Ồ, đây là loại cụ thể và chưa đăng ký, vì vậy tôi sẽ chỉ hoạt động như đã được đăng ký với cài đặt mặc định"?
Ngọt ngào - Nghe có vẻ giống như những gì tôi đang tìm kiếm. Cảm ơn! –