我开始一个新的桌面应用程序,我想建立它使用 MVVM 和 WPF。
I am also intending to use TDD.
问题是我不知道如何使用 IoC 容器来注入我对生产代码的依赖。
假设我有以下类和接口:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
然后我还有另一个类,它有 IStorage
作为依赖项,假设这个类是 ViewModel 或业务类..。
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
有了这个,我可以很容易地编写单元测试,以确保它们正常工作,使用模拟等等。
The problem is when it comes to use it in the real application. I know that I must have an IoC container that links a default implementation for the IStorage
interface, but how would I do that?
例如,如果我有下面这个 xaml:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
在这种情况下,我如何正确地“告诉”WPF 注入依赖项?
另外,假设我需要一个来自 C # 代码的 SomeViewModel
实例,我应该怎么做呢?
我觉得我完全迷失在这里,我会感激任何例子或指导是最好的方式来处理它。
我熟悉结构图,但我不是专家。此外,如果有一个更好的/更容易的/开箱即用的框架,请让我知道。