Как обрабатывать инъекцию зависимостей в приложении WPF/MVVM
я запускаю новое настольное приложение, и я хочу построить его с помощью 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, но я не эксперт. Кроме того, если есть лучшая/более простая/готовая структура, пожалуйста, дайте мне знать.
спасибо заранее.
Comments