Je démarre une nouvelle application de bureau et je souhaite la créer à l'aide de MVVM et WPF.
J'ai également l'intention d'utiliser TDD.
Le problème est que je ne sais pas comment utiliser un conteneur IoC pour injecter mes dépendances sur mon code de production.
Supposons que j'ai la classe et l'interface suivantes:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
Et puis j'ai une autre classe qui a IStorage
pour dépendance, supposons aussi que cette classe soit un ViewModel ou une classe affaires ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
Avec cela, je peux facilement écrire des tests unitaires pour m'assurer qu'ils fonctionnent correctement, en utilisant des simulations, etc.
Le problème est quand il s'agit de l'utiliser dans l'application réelle. Je sais que je dois avoir un conteneur IoC qui lie une implémentation par défaut pour l' IStorage
interface, mais comment ferais-je cela?
Par exemple, comment serait-ce si j'avais le xaml suivant:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
Comment puis-je «dire» correctement à WPF d'injecter des dépendances dans ce cas?
De plus, supposons que j'ai besoin d'une instance de SomeViewModel
de mon code C #, comment dois-je le faire?
Je sens que je suis complètement perdu dans tout cela, j'apprécierais tout exemple ou toute indication sur la meilleure façon de gérer cela.
Je connais StructureMap, mais je ne suis pas un expert. De plus, s'il existe un cadre meilleur / plus facile / prêt à l'emploi, veuillez me le faire savoir.