Yeni bir masaüstü uygulaması başlatıyorum ve bunu MVVM ve WPF kullanarak oluşturmak istiyorum.
Ben de TDD'yi kullanmak niyetindeyim.
Sorun şu ki, bağımlılıklarımı üretim koduma enjekte etmek için bir IoC kabını nasıl kullanmam gerektiğini bilmiyorum.
Aşağıdaki sınıfa ve arayüze sahip olduğumu varsayalım:
public interface IStorage
{
bool SaveFile(string content);
}
public class Storage : IStorage
{
public bool SaveFile(string content){
// Saves the file using StreamWriter
}
}
Ve sonra IStorage
bağımlılığı olan başka bir sınıfım var, bu sınıfın bir ViewModel veya bir işletme sınıfı olduğunu da varsayalım ...
public class SomeViewModel
{
private IStorage _storage;
public SomeViewModel(IStorage storage){
_storage = storage;
}
}
Bununla, düzgün çalıştıklarından emin olmak için, taklitler kullanarak vb. Birim testleri kolayca yazabilirim.
Sorun, gerçek uygulamada kullanmak söz konusu olduğunda. IStorage
Arayüz için varsayılan bir uygulamayı birbirine bağlayan bir IoC kabına sahip olmam gerektiğini biliyorum , ancak bunu nasıl yapacağım?
Örneğin, aşağıdaki xaml'e sahip olsaydım nasıl olurdu:
<Window
... xmlns definitions ...
>
<Window.DataContext>
<local:SomeViewModel />
</Window.DataContext>
</Window>
Bu durumda WPF'ye bağımlılıkları enjekte etmesini nasıl doğru bir şekilde 'söyleyebilirim'?
Ayrıca, SomeViewModel
C # kodumun bir örneğine ihtiyacım olduğunu varsayalım , bunu nasıl yapmalıyım?
Bunda tamamen kaybolduğumu hissediyorum, bununla başa çıkmanın en iyi yolunun nasıl olduğuna dair herhangi bir örnek veya rehberlik için minnettar olurum.
StructureMap'e aşinayım, ancak bir uzman değilim. Ayrıca, daha iyi / daha kolay / kullanıma hazır bir çerçeve varsa lütfen bana bildirin.