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