我正在开始一个新的桌面应用程序,并希望使用MVVM和WPF构建。
我还打算使用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;
}
}
有了这个,我可以轻松编写单元测试以确保它们正常工作,使用模拟等方法。
问题在于当它用于实际应用程序时。我知道我必须有一个IoC容器来链接IStorage
接口的默认实现,但我该怎么做呢?
例如,如果我有以下XAML,会怎样呢:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
在这种情况下,我应该如何正确地“告诉”WPF注入依赖项?
另外,假设我需要从我的C#代码中获取SomeViewModel
的实例,我该怎么做?
我感到完全迷失了,我会很感激任何示例或指导,告诉我如何处理它的最佳方法。
我熟悉StructureMap,但并不是专家。如果有更好/更简单/开箱即用的框架,请告诉我。