/ / पीओसीओ और एकाधिक व्यू मॉडल एक ही पीओसीओ की ओर इशारा करते हैं? - सी#, एमवीवीएम, पोको, इनोटिफाईप्रॉपर्टीचेंज्ड

पीओसीओ और एकाधिक व्यूमोडल्स एक ही पॉको को इंगित करते हैं? - सी #, एमवीवीएम, पोको, inotifypropertychanged

ऐसी स्थिति को संभालने के बारे में कोई कैसे जाएगायह? एक ही POCO ऑब्जेक्ट के संदर्भ में एक से अधिक ViewModel होने। व्यूमोडेल ए पीओसीओ अपडेट करता है ... अब व्यूमोडेल बी को इसके बारे में किसी भी तरह से जानने की जरूरत है?

उत्तर:

जवाब के लिए 2 № 1

यह मानते हुए कि आपका POCO लागू नहीं हो सकता INotifyPropertyChanged, आप एक का उपयोग कर सकते हैं मध्यस्थ POCO बदलने पर अन्य दृश्य मॉडलों को सचेत करने के लिए पैटर्न

public interface ICareWhenAModelChanges<T>
{
void ModelUpdated(T updatedModel);
}

public class ModelChangeMediator<T>
{
private List<ICareWhenAModelChanges<T>> _listeners = new List<ICareWhenAModelChanges<T>>();

public void Register(ICareWhenAModelChanges<T> listener)
{
_listeners.Add(listener);
}

public void NotifyThatModelIsUpdated(T updatedModel)
{
foreach (var listener in _listeners) listener.ModelUpdated(updatedModel);
}
}

आपका व्यू मॉडल तब लागू कर सकता है ICareWhenAModelChanges<T> इंटरफ़ेस, मध्यस्थ के एक साझा उदाहरण के साथ खुद को पंजीकृत करें (या तो एक सिंगलटन या बेहतर, किसी प्रकार के डीआई/आईओसी ढांचे के माध्यम से प्राप्त) और जो कुछ भी करने की आवश्यकता है उसे करें ModelUpdated तरीका