मैं समझता हूं कि विधि/फ़ंक्शन ओवरराइड करने से व्युत्पन्न कक्षा में इसके कार्यान्वयन से मूल कक्षा में कार्यान्वयन को फिर से परिभाषित किया जाता है।क्या मुझे एएसपी.NET के लिए सी # में एक विधि को ओवरराइड करते समय बेस क्लास कार्यान्वयन को कॉल करना चाहिए?
अब क्या मुझे confuses, अगर मैं ASP.NET जैसे CreateChildControls()
में एक वर्ग को ओवरराइड है (मैं इसे कोई विशेष कारण के लिए बेतरतीब ढंग से उठाया), VS2008 स्वत: उत्पन्न करता है:
protected override void CreateChildControls()
{
base.CreateChildControls();
}
काफी अच्छा है, डिफ़ॉल्ट कार्यान्वयन बस बेस क्लास 'CreateChildControls()
पर कॉल करता है।
तो अगर मैं, के बाद से मैं कैसे base.CreateChildControls()
पता नहीं है, कुछ कोड चलाना चाहते हैं मैं इस करना चाहिए:
protected override void CreateChildControls()
{
/*My Code Here*/
base.CreateChildControls();
}
या, उपेक्षा क्या base.CreateChildControls()
पूरी तरह और बस
protected override void CreateChildControls()
{
/*My Code Here*/
}
यह वास्तव में आश्चर्यजनक है कि आपको उस बेस क्लास को ओवरराइड करने की अनुमति होगी जिसे आप गोपनीय नहीं हैं। – Matt
मुझे वह स्वतंत्रता प्राप्त करनी है। सिर्फ इसलिए कि मैं तुम्हारा बच्चा हूं, इसका मतलब यह नहीं है कि मैं आपके जैसा सब कुछ करना चाहता हूं। कभी-कभी, मुझे दुनिया में बाहर जाना और चीजों को अपना रास्ता बनाना है। यदि आप मुझे अपना कार्यान्वयन करने के लिए मजबूर करते हैं तो आप एक अतिसंवेदनशील माता-पिता होंगे। :) –
इस तथ्य से शुरू करना कि मैं अपने कस्टम 'कंट्रोल' में ओवरराइड करते समय बेस क्लास का आविष्कार कर रहा हूं, 'ऑनएक्सxxएक्स' ओवरराइड के संबंध में मुझे आम तौर पर मिला कि मैं अपनी व्युत्पन्न विधि के अंत में 'base.OnXxxx' को कॉल करता हूं। क्या व्युत्पन्न विधि की शुरुआत या अंत में 'बेस। क्रेट चाइल्डकंट्रोल' को कॉल करने के लिए अंगूठे का कोई नियम है? – superjos