की अधिभावी मनुष्य में मैं इस तरह एक आधार वर्ग "पिता" है बच्चे में माता-पिता के गेटर को बुला रहा है (या कम से कम यही मेरा इरादा है)।कॉलिंग "बेस मनुष्य" संपत्ति
अब मैं इसे तुरंत चालू करके "चाइल्ड" क्लास का उपयोग करता हूं, एक वर्चुअलप्रोपर्टी में एक मान (चलो कहता हूं 4) निर्दिष्ट करता हूं और फिर संपत्ति को फिर से पढ़ता हूं।
Child c = new Child();
c.VirtualProperty = 4;
Console.Out.WriteLine("Child.VirtualProperty: " + c.VirtualProperty);
जब मैं इसे चलाता हूं, तो मुझे स्पष्ट रूप से एक एप्लिकेशन अपवाद "डमी एक्स" कहता है। लेकिन अगर मैं बाल में लाइन
if(base.VirtualProperty > 0)
पर एक ब्रेकपाइंट सेट और base.VirtualProperty
के मान की जाँच (इस पर माउस होवर करके) से पहले अपवाद फेंकी जा सकती है (मैं (घ) मान), मुझे पहले ही अपवाद मिल गया है। इससे मैं यह बताता हूं कि "चाइल्ड-गेटटर कॉल खुद" में base.VirtualProperty
का बयान; एक प्रकार का।
मैं क्या प्राप्त करने के लिए चाहते हैं एक ही व्यवहार मैं जब मैं संरक्षित करने के लिए parentVirutalInt
की परिभाषा बदल (पैरेंट में) और के बजाय बाल base.VirtualProperty
की मनुष्य में base.parentVirtualInt
का उपयोग करें। और मैं अभी तक नहीं देखता कि यह क्यों काम नहीं कर रहा है। क्या कोई इस पर कुछ प्रकाश डाल सकता है? मुझे लगता है कि ओवरराइड गुण ओवरराइड तरीकों से अलग व्यवहार करते हैं?
वैसे: मैं उस वर्ग को सबक्लासिंग के साथ बहुत कुछ कर रहा हूं जिस पर मेरा कोई नियंत्रण नहीं है (यही कारण है कि मेरा "वर्कअराउंड" एक विकल्प नहीं है)।
तरह डीबगर में