जब भी मैं इस विधि के कार्यान्वयन के अलावा, बेस क्लास की विधि को ओवरराइड करता हूं, तो मुझे लगता है कि 3 विकल्प हैं।बेस क्लास विधि को "ठीक से" ओवरराइड कैसे करें?
1) कॉल बेस। विधि(), और फिर मेरा कार्यान्वयन प्रदान करें।
2) मेरी कार्यान्वयन प्रदान करें और उसके बाद base.Method फोन()
3) बस मेरे कार्यान्वयन प्रदान करते हैं।
हाल ही में लाइब्रेरी का उपयोग करते समय मुझे कुछ बग का एहसास हुआ है जो लाइब्रेरी द्वारा अपेक्षित विधि को लागू नहीं करने के कारण पेश किए गए थे। मुझे यकीन नहीं है कि पुस्तकालय के हिस्से में यह बुरा है, या मेरी समझ में कुछ गलत है।
मैं एक उदाहरण लेगा।
public class ViewManager {
public virtual void Customize(){
PrepareBaseView();
}
}
public class PostViewManager {
public override void Customize(){
base.Customize();
PreparePostView();
}
}
public class PreViewManager {
public override void Customize(){
PreparePreView();
base.Customize();
}
}
public class CustomViewManager {
public override void Customize(){
PrepareCustomView();
}
}
यहाँ मेरा प्रश्न है कि कैसे कर सकते थे एक बच्चे कक्षा पता जनक वर्ग द्वारा की उम्मीद की जा रही है जो आदेश (या विकल्प) (आधार वर्ग कार्यान्वयन पर एक नज़र लेने के बिना)? क्या कोई तरीका है जिसमें अभिभावक वर्ग सभी व्युत्पन्न कक्षाओं में से तीन विकल्पों में से एक को लागू कर सकता है?
'पोस्ट व्यूमेनगर', 'प्रीव्यूमेनगर', 'कस्टम व्यूमेनगर' 'ViewManager' से प्राप्त होता है? यदि ऐसा है, तो आपको कोड संपादित करना चाहिए। – LaTeX