inheritance - C#: Any way to skip over one of the base calls in polymorphism? -
वर्ग grandparent {सार्वजनिक वर्चुअल शून्य} Foo () {...}} वर्ग अभिभावक: दादाजी {सार्वजनिक ओवरराइड शून्य फू () {base.Foo (); // अतिरिक्त काम करें}} वर्ग बच्चे: माता-पिता {सार्वजनिक ओवरराइड शून्य} Foo () कैसे माता पिता को छोड़ने के लिए.फू और सिर्फ GrandParent.Foo बेस पाने के लिए? // ऊपर अतिरिक्त कोड}}
ऊपर दिए गए कोड के रूप में, मेरे पास बाल कैसे हो सकता है। फ़ू () में जाने के बजाय GrandParent.Foo () में कॉल करें Parent.Foo ()? base.Foo ()
मुझे पहले मूल वर्ग में ले जाता है।
आपका डिज़ाइन गलत है अगर आपको इसकी आवश्यकता है। इसके बजाय, प्रति कोड तर्क को DoFoo
में डाल दें और base.DoFoo
को कॉल न करें जब आपको इसकी आवश्यकता न हो ।
वर्ग GrandParent {public void Foo () {// आधार तर्क जो हमेशा यहां चलाना चाहिए: // ... this.DoFoo (); // कॉल व्युत्पन्न तर्क] सुरक्षित आभासी शून्य DoFoo () {}} वर्ग अभिभावक: ग्रैंडपैंट {संरक्षित ओवरराइड शून्य DoFoo () {// अतिरिक्त काम (आधार कॉल करने की आवश्यकता नहीं है। डूफू)}} वर्ग: बच्चे: संरक्षित ओवरराइड शून्य DoFoo () {// अतिरिक्त काम (आधार कॉल करने की आवश्यकता नहीं है। डूफू)}}
Comments
Post a Comment