Я запускаю нову програму для настільних ПК, і хочу створити її за допомогою 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
мого коду C #, як це зробити?
Я відчуваю, що повністю втрачений у цьому, я буду вдячний за будь-який приклад чи настанови, як найкраще впоратися з цим.
Я знайомий з StructureMap, але я не фахівець. Крім того, якщо є краща / легша / поза рамками, будь ласка, повідомте мене про це.