Tôi đang bắt đầu một ứng dụng máy tính để bàn mới và tôi muốn xây dựng nó bằng MVVM và WPF.
Tôi cũng đang có ý định sử dụng TDD.
Vấn đề là tôi không biết mình nên sử dụng vùng chứa IoC như thế nào để đưa các phần phụ thuộc vào mã sản xuất của mình.
Giả sử tôi có lớp và giao diện sau:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
Và sau đó tôi có một lớp khác có IStorage
vai trò phụ thuộc, cũng giả sử rằng lớp này là ViewModel hoặc lớp doanh nghiệp ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
Với điều này, tôi có thể dễ dàng viết các bài kiểm tra đơn vị để đảm bảo rằng chúng đang hoạt động bình thường, sử dụng mocks, v.v.
Vấn đề là khi sử dụng nó trong ứng dụng thực. Tôi biết rằng tôi phải có vùng chứa IoC liên kết triển khai mặc định cho IStorage
giao diện, nhưng tôi sẽ làm điều đó như thế nào?
Ví dụ, nó sẽ như thế nào nếu tôi có xaml sau:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
Làm cách nào để tôi có thể 'yêu cầu' WPF chèn các phụ thuộc một cách chính xác trong trường hợp đó?
Ngoài ra, giả sử tôi cần một phiên bản SomeViewModel
từ mã C # của mình, tôi nên làm như thế nào?
Tôi cảm thấy mình hoàn toàn lạc lối trong việc này, tôi sẽ đánh giá cao bất kỳ ví dụ hoặc hướng dẫn nào về cách tốt nhất để xử lý nó.
Tôi quen thuộc với StructureMap, nhưng tôi không phải là chuyên gia. Ngoài ra, nếu có một khuôn khổ tốt hơn / dễ dàng hơn / vượt trội hơn, vui lòng cho tôi biết.