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



спасибо заранее.

821   0  

Comments

    Ничего не найдено.