Có thể sử dụng ninject để tiêm phụ thuộc theo cách sao cho kết quả sẽ giống như tiêm tôi có thể nhận được trong MVC hay không. Để xây dựng, nếu tôi sử dụng bộ chuyển đổi MVC ninject tôi có thể khai báo bộ điều khiển web của tôi là có tham số constructor mà sau đó sẽ tự động được tiêm bởi ninject.Tiêm xây dựng Ninject trong WPF
Tuy nhiên, tôi đã không tìm thấy như một phần mở rộng Ninject cho WPF, mà sẽ cho phép tôi để có một cửa sổ như thế này:
public partial class MainWindow : Window
{
private readonly IService injectedService;
public MainWindow(IService injectedService)
{
this.injectedService = injectedService;
}
}
Tôi muốn làm điều này mà không sử dụng một cách rõ ràng IKernel
trong tôi khởi động ứng dụng chính để có được một thể hiện của mainwindow. Tôi muốn sử dụng phương pháp thông thường của cấu hình xaml để có được một thể hiện của cửa sổ chính và tất cả các cửa sổ tiếp theo.
Điều này có khả thi không? Có cách nào để móc vào việc tạo đối tượng được tạo ra bởi xaml để sửa đổi nó để sử dụng Ninject cho việc tiêm phụ thuộc constructor hay không.
Tôi không nghĩ rằng một phần mở rộng như vậy tồn tại, bởi vì trong WPF bạn thường sử dụng mô hình MVVM và do đó sẽ tiêm các dịch vụ vào các lớp ViewModel của bạn. –
Nhưng không phải là các mô hình tự tạo ra thông qua XAML là tốt? Phải thừa nhận rằng, tôi không phải là một chuyên gia về WPF nhưng sẽ không phải là các mô hình sau đó cần phải cùng một loại tiêm phụ thuộc? Tôi lo ngại về việc có container của tôi hiển thị mà sẽ cản trở thử nghiệm đơn vị của dự án. – Dervall
Không, các Chế độ xem không được tạo trong XAML. Chúng được tạo trong ViewModelLocator, xem [ở đây] (http://windowsphonegeek.com/articles/Working-with-a-simple-ViewModelLocator-from-MVVM-Lite) để biết ví dụ. Chế độ xem hoặc Chế độ xem của bạn không biết bất kỳ điều gì về vùng chứa phụ thuộc của bạn. –