Ich starte eine neue Desktop-Anwendung und möchte sie mit MVVM und WPF erstellen.
Ich beabsichtige auch, TDD zu verwenden.
Das Problem ist, dass ich nicht weiß, wie ich einen IoC-Container verwenden soll, um meine Abhängigkeiten von meinem Produktionscode einzufügen.
Angenommen, ich habe die folgende Klasse und Schnittstelle:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
Und dann habe ich eine andere Klasse, die IStorage
eine Abhängigkeit hat. Nehmen wir auch an, dass diese Klasse ein ViewModel oder eine Business-Klasse ist ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
Mit diesem kann ich leicht Unit-Tests schreiben, um sicherzustellen, dass sie richtig funktionieren, mit Mocks und so weiter.
Das Problem ist, wenn es darum geht, es in der realen Anwendung zu verwenden. Ich weiß, dass ich einen IoC-Container haben muss, der eine Standardimplementierung für die IStorage
Schnittstelle verknüpft , aber wie würde ich das tun?
Wie wäre es zum Beispiel, wenn ich das folgende xaml hätte:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
Wie kann ich WPF in diesem Fall korrekt anweisen, Abhängigkeiten einzufügen?
Angenommen, ich benötige eine Instanz SomeViewModel
von meinem C # -Code. Wie soll ich das tun?
Ich fühle mich völlig verloren, ich würde mich über jedes Beispiel oder eine Anleitung freuen, wie man am besten damit umgeht.
Ich bin mit StructureMap vertraut, aber kein Experte. Wenn es ein besseres / einfacheres / sofort einsatzbereites Framework gibt, lassen Sie es mich bitte wissen.