तो मुझे ये कक्षाएं मिली हैं जो बाल वस्तुओं के संग्रह का पर्दाफाश करती हैं।क्या सामान्य संग्रह को पढ़ने के लिए एक अच्छा पैटर्न है?
मैं नहीं चाहता कि अन्य वर्ग संग्रह से वस्तुओं को जोड़ या निकाल दें क्योंकि मुझे बच्चे की वस्तुओं में घटनाओं में तार करने की आवश्यकता है, ताकि वे जोड़े या हटाए जाएं, मैं अतिरिक्त प्रसंस्करण करने में सक्षम होना चाहता हूं। लेकिन मुझे वास्तव में जेनेरिकों को आंतरिक रूप से जोड़ना आसान लगता है।
क्या मैंने इसका उल्लेख किया है कि यह एक WPF ऐप है इसलिए मुझे INotifySupport की आवश्यकता है?
सबसे अच्छा मैं इस तरह से कुछ कर सकता हूं।
public class foo : INotifyPropertyChanged
{
protected List<ChildFoo> _Children = new List<ChildFoo>();
public foo()
{
}
public void AddChild(ChildFoo newChild)
{
DoAttachLogic(newChild);
_Children.Add(newChild);
NotifyPropertyChange("Children");
}
public void RemoveChild(ChildFoo oldChild)
{
DoRemoveLogic(oldChild);
_Children.Remove(oldChild);
NotifyPropertyChange("Children");
}
public ChildFoo[] Children
{
get
{
return _Children.ToArray();
}
}
}
क्या इस डिज़ाइन के साथ गंभीर त्रुटियां हैं जिन्हें मैं नहीं देख रहा हूं?
प्रत्येक बार जब बच्चे की संपत्ति का उपयोग किया जाता है तो हमें सूची को एक सरणी में बदलने का ओवरहेड मिलता है।
इस पर कोई सलाह बहुत अच्छी होगी।
नोटिफ़ाईप्रॉपर्टी चेंज ("बच्चे") मत बढ़ाएं क्योंकि एक बच्चा ऑब्जेक्ट बदल गया है। आप पूरे संग्रह को पुनर्जीवित नहीं करना चाहते हैं। –
सूची के बजाय, ObservableCollection पर विचार करें। यह संग्रह परिवर्तन घटनाओं को लागू करता है जो डब्ल्यूपीएफ की अपेक्षा करता है। एक और विकल्प INotifyCollection को सीधे लागू करना है। –
सही लेकिन ऑब्जर्वेबल कोलेक्शन के साथ समस्या यह है कि कोई प्रोग्रामर अब AddChild() विधि का उपयोग किये बिना सीधे संग्रह में जोड़ सकता है। यदि ऐसा करने का कोई तरीका था तो मैं दिल की धड़कन में देखने योग्य उपयोग करता। –