我正在启动一个新的桌面应用程序,我想使用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以注入依赖关系?
另外,假设我需要的实例SomeViewModel从我的cs代码,我应该怎么办呢?
我感到自己完全迷失了这一点,对于任何如何处理最佳方法的示例或指导,我将不胜感激。
我熟悉StructureMap,但我不是专家。另外,如果有更好/更轻松/开箱即用的框架,请告诉我。
提前致谢。
偶然的你
饮歌长啸