मैं एक नया डेस्कटॉप एप्लिकेशन शुरू कर रहा हूं और मैं इसे MVVM और WPF का उपयोग करके बनाना चाहता हूं।
मैं भी TDD का उपयोग करने का इरादा कर रहा हूं।
समस्या यह है कि मुझे नहीं पता कि मुझे अपने उत्पादन कोड पर अपनी निर्भरता को इंजेक्ट करने के लिए आईओसी कंटेनर का उपयोग कैसे करना चाहिए।
मान लीजिए कि मेरे पास फ़ॉउलिंग क्लास और इंटरफ़ेस है:
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 # कोड से एक उदाहरण की आवश्यकता है , मुझे यह कैसे करना चाहिए?
मुझे लगता है कि मैं इसमें पूरी तरह से खो गया हूं, मैं किसी भी उदाहरण या मार्गदर्शन की सराहना करता हूं कि इसे संभालने का सबसे अच्छा तरीका कैसे है।
मैं स्ट्रक्च्योर मैप से परिचित हूं, लेकिन मैं विशेषज्ञ नहीं हूं। इसके अलावा, अगर कोई बेहतर / आसान / आउट-ऑफ-द-बॉक्स ढांचा है, तो कृपया मुझे बताएं।