.net - INotifyPropertyChanging और सत्यापन: जब मैं संपत्ति बदलता हूं?




data-binding events (2)

INotifyPropertyChanged काफी आत्म व्याख्यात्मक है और मुझे लगता है कि मैं उस समय को स्पष्ट करने पर स्पष्ट हूं (यानी जब मैंने मूल्यों को अद्यतन करना समाप्त कर दिया है)।
अगर मैं INotifyPropertyChanging को कार्यान्वित करता हूं, मैं ईवेंट को बढ़ाने के लिए चल रहा हूँ जैसे ही मैं सेटर या अन्य विधि दर्ज करता हूं जो वस्तुओं को बदलता है और फिर किसी भी गार्ड और वैधताओं के साथ जारी रहती है जो हो सकती हैं।

इसलिए मैं इस घटना को एक अधिसूचना के रूप में इलाज कर रहा हूँ कि संपत्ति बदल सकती है, लेकिन अभी तक इसे बदला नहीं गया है, और वास्तव में सफलतापूर्वक बदलना कभी खत्म नहीं हो सकता है

अगर वस्तु के उपभोक्ता इस संपत्ति का उपयोग कर रहे हैं (जैसे कि बदलना ट्रैकिंग के लिए घटना का उपयोग करते हुए हम कहते हैं कि LINQ को SQL का उपयोग करना है) मुझे एक बार ही आयोजन करना चाहिए और एक बार जब मैंने यह मान्य किया है कि मैंने दिया गया मूल्य अच्छा है और ऑब्जेक्ट की स्थिति परिवर्तन के लिए मान्य है?

इस घटना के लिए अनुबंध क्या है और ग्राहकों में किन दुष्परिणाम होंगे?


एक अलग के रूप में- पोस्ट-एसएचआरपी में इनोटिफ़ाफ़्रोपर्टी स्वतन्त्र रूप से लागू करने की दिलचस्प क्षमता है- जैसे ही


यदि आपके ऑब्जेक्ट को एक मूल्य दिया जाता है जो कि संपत्ति के लिए अमान्य है और आप अपवाद फेंक देते हैं तो आपको PropertyChanging इवेंट नहीं बढ़ाया जाना चाहिए। आपको केवल उस घटना को बढ़ा देना चाहिए जब आपने तय किया है कि मूल्य में बदलाव आएगा। एक साधारण फ़ील्ड बदलने के लिए विशिष्ट उपयोग परिदृश्य है:

public T Foo
 { get
    { return m_Foo;
    }
   set
    { if (m_Foo == value) return; //no need for change (or notification)
      OnPropertyChanging("Foo");
      m_Foo = value;
      OnPropertyChanged("Foo");
    }
 }




change-tracking