Saya memulai aplikasi desktop baru dan saya ingin membuatnya menggunakan MVVM dan WPF.
Saya juga berniat menggunakan TDD.
Masalahnya adalah saya tidak tahu bagaimana saya harus menggunakan wadah IoC untuk menyuntikkan ketergantungan saya pada kode produksi saya.
Misalkan saya memiliki kelas dan antarmuka berikut:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
Dan kemudian saya memiliki kelas lain yang memiliki IStorage
ketergantungan, misalkan juga bahwa kelas ini adalah ViewModel atau kelas bisnis ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
Dengan ini saya dapat dengan mudah menulis unit test untuk memastikan bahwa mereka bekerja dengan baik, menggunakan tiruan dan lain-lain.
Masalahnya adalah ketika menggunakannya dalam aplikasi nyata. Saya tahu bahwa saya harus memiliki wadah IoC yang menautkan implementasi default untuk IStorage
antarmuka, tetapi bagaimana saya melakukannya?
Misalnya, bagaimana jadinya jika saya memiliki xaml berikut:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
Bagaimana saya bisa dengan benar 'memberitahu' WPF untuk menyuntikkan dependensi dalam kasus itu?
Juga, misalkan saya memerlukan contoh dari SomeViewModel
kode C # saya, bagaimana saya harus melakukannya?
Saya merasa benar-benar tersesat dalam hal ini, saya sangat menghargai setiap contoh atau panduan tentang bagaimana cara terbaik untuk menanganinya.
Saya akrab dengan StructureMap, tetapi saya bukan seorang ahli. Selain itu, jika ada kerangka kerja yang lebih baik / lebih mudah / out-of-the-box, beri tahu saya.