माइक्रोसॉफ्ट प्रतिबिंब और शायद गुणों का उपयोग करने के बजाय निर्भरता गुणों और निर्भरता वस्तुओं को बनाने का मार्ग क्यों चला गया?निर्भरता गुण क्यों?
उत्तर
यह मैं तर्क को समझने में मदद:,
मुख्य अंतर यह है कि एक सामान्य नेट संपत्ति के मूल्य सीधे अपनी कक्षा में एक निजी सदस्य से पढ़ी जाती है, एक DependencyProperty का मूल्य जबकि GetValue() विधि को कॉल करते समय गतिशील रूप से हल किया गया है जो DependencyObject से विरासत में मिला है।
आप किसी निर्भरता संपत्ति यह आपके वस्तु का एक क्षेत्र में संग्रहीत नहीं है के एक मूल्य सेट करते हैं, लेकिन चाबियों का एक शब्दकोश में और आधार वर्ग DependencyObject द्वारा प्रदान की महत्व देता है। प्रविष्टि की कुंजी संपत्ति का नाम है और मान वह मान है जिसे आप सेट करना चाहते हैं।
निर्भरता गुणों का लाभ इस प्रकार हैं:
कम स्मृति पदचिह्न
यह प्रत्येक संपत्ति के लिए एक क्षेत्र स्टोर करने के लिए जब आपको लगता है एक बहुत बड़ा अपव्यय है कि एक यूआई के गुणों का 90% से अधिक नियंत्रण आमतौर पर इसके प्रारंभिक मूल्यों पर रहते हैं। निर्भरता गुण उदाहरण में संशोधित गुणों को स्टोर करके इन समस्याओं को हल करते हैं। एक बार निर्भरता संपत्ति के भीतर डिफ़ॉल्ट मान संग्रहीत किए जाते हैं।
मूल्य विरासत
आप किसी निर्भरता संपत्ति के मूल्य एक मूल्य के संकल्प रणनीति का उपयोग करके हल हो गई है का उपयोग करते हैं। यदि कोई स्थानीय मान सेट नहीं किया गया है, तो निर्भरता प्रॉपर्टी लॉजिकल पेड़ को तब तक नेविगेट करती है जब तक कि उसे कोई मूल्य न मिले। जब आप रूट तत्व पर फ़ॉन्ट आकार सेट करते हैं तो यह मान को ओवरराइड करने के अलावा नीचे दिए गए सभी टेक्स्टब्लॉक पर लागू होता है।
बदलने की सूचना
निर्भरता गुण निर्मित एक परिवर्तन सूचना तंत्र है। संपत्ति मेटाडेटा में कॉलबैक पंजीकृत करके आपको अधिसूचित किया जाता है, जब संपत्ति का मूल्य बदल दिया गया है। यह डाटाबेसिंग द्वारा भी प्रयोग किया जाता है।
से: WPF Tutorials।
महान उत्तर के लिए धन्यवाद। डीपी पर सभी एमएसडीएन दस्तावेज पढ़ने के बाद भी, जब तक मैं आपकी प्रतिक्रिया नहीं पढ़ता तब तक मैं अभी भी थोड़ा रहस्यमय था। –
Dependency properties प्रतिबिंब और विशेषताओं की तुलना में एक अलग उपयोग परिदृश्य हल करें।
निर्भरता गुण उन चीजों को करने के लिए एक एकल, सुसंगत एपीआई प्रदान करते हैं जो मानक गुण संभाल नहीं सकते हैं।
- कक्षाओं को ओवरहेड के बिना बड़ी संख्या में गुण प्रदान करने की अनुमति दें (क्योंकि वे केवल बनाए जाते हैं, स्थिर रूप से, जब उपयोग किए जाते हैं, प्रति वर्ग एक बार नहीं)।
- निर्भरता संपत्ति प्रणाली मानक निर्भरता गुणों के अनुरूप Attached Properties जैसी चीजों को संभालती है।
- निर्भरता गुण change tracking as well as validation के लिए एक स्वच्छ API प्रदान करते हैं।
- निर्भरता गुण property value inheritance प्रदान करते हैं।
- निर्भरता गुण great performance benefits प्रदान करते हैं जब डेटा बाध्य होता है।
- 1. निर्भरता गुण "स्थैतिक" क्यों हैं?
- 2. निर्भरता गुण
- 3. console.dir ('') प्रिंट "गुण नहीं" क्यों करता है?
- 4. निर्भरता इंजेक्शन फ्रेमवर्क: मुझे परवाह क्यों है?
- 5. एफ # गुण बनाम सी # गुण
- 6. jQuery विस्तार गुण गुण
- 7. निर्भरता निर्भरता प्रॉपर्टी
- 8. निर्भरता और परीक्षण निर्भरता
- 9. निर्भरता संपत्ति पुन: प्रवेश (या: यह क्यों काम करता है?)
- 10. गुण
- 11. गुण
- 12. vb.net तर्क के बिना गुण/सेट गुण
- 13. निर्भरता
- 14. स्वचालित गुण बनाम स्वचालित गुण
- 15. निर्भरता संपत्ति त्रुटि
- 16. वसंत 3.0.5 गुण
- 17. सिल्वरलाइट: प्रोग्रामेटिक बाध्यकारी नियंत्रण गुण
- 18. सर्कुलर निर्भरता ++
- 19. निर्भरता ".properties" फ़ाइल
- 20. आयात गूगल प्ले सेवा निर्भरता लाल क्रॉस
- 21. सी # केवल पढ़ने में गुमनाम प्रकारों के गुण क्यों हैं?
- 22. क्यों हम सी # में गुण की जरूरत है
- 23. सी # 3.0 स्वचालित गुण, फ़ील्ड का उपयोग क्यों न करें?
- 24. जावा 7 में कोई मूल गुण क्यों नहीं होंगे?
- 25. क्यों मेरा जावा एप्लिकेशन मेरी गुण फ़ाइल नहीं ढूंढ सकता
- 26. कुछ ऑब्जेक्ट गुण क्यों हैं UnaryExpression और अन्य सदस्यExpression?
- 27. जावा में स्वचालित गुण क्यों नहीं हैं जैसे सी #?
- 28. `getattr` लगातार गुण पुनर्प्राप्ति का समर्थन क्यों नहीं करता है?
- 29. मेरे सभी लॉग 4नेट स्तर क्यों झूठे हैं? गुण
- 30. रीडोनली गुण छंद कार्यों का उपयोग करना बेहतर क्यों है?
तो निर्भरता गुणों के डिफ़ॉल्ट मान कहां संग्रहीत किए जाते हैं। वे स्मृति भी ले रहे थे, है ना? अगर हम टेक्स्टबॉक्स नियंत्रण के "टेक्स्ट" डीपी को भी बदलते हैं, तो बदलते मान को उस ऑब्जेक्ट (विशेष टेक्स्टबॉक्स) के हैशटेबल में ही संग्रहीत किया जाएगा? यदि यह मामला है, तो डिफ़ॉल्ट मान + मूल्य बदल गया .. स्मृति को दोगुना करना ..ufff। मुझे अपने विचारों को जानने दें, राकेश www.qtricks.com –
@ राजेश कुमार: डिफ़ॉल्ट मान स्थिर रूप से संग्रहीत किए जाते हैं। इसलिए कम पदचिह्न क्योंकि आपके पास सभी उदाहरणों के लिए केवल एक मूल्य है। – user879355