मुझे पता है कि सी # में रचनाकारों का उत्तराधिकारी होना संभव नहीं है, लेकिन संभवतः ऐसा करने का एक तरीका है जो मैं करना चाहता हूं।सी #: विरासत रचनाकार
मेरे पास एक बेस क्लास है जो कई अन्य वर्गों द्वारा विरासत में मिली है, और इसमें Init
विधि है जो कुछ 1 पैरामीटर लेने शुरू कर देती है। अन्य सभी इनहेरिट कक्षाएं भी इस प्रारंभ करने की जरूरत है, लेकिन मैं उन्हें यह सब के लिए अलग से कंस्ट्रक्टर्स बनाने के लिए इस तरह चाहते हैं आवश्यकता होगी:
public Constructor(Parameter p) {
base.Init(p);
}
कि पूरी तरह से सूखी सिद्धांतों का उल्लंघन! दर्जनों रचनाकारों को बगैर मेरे पास सभी जरूरी चीजें कैसे शुरू की जा सकती हैं?
डीआरवाई सिद्धांतों का उल्लंघन करने से भी बदतर इनवेरिएंट सिद्धांत का उल्लंघन कर रहा है। एक विधि के नाम के रूप में 'इनिट' आम तौर पर एक मजबूत संकेत है कि अमान्य राज्यों में वस्तुएं अनिवार्य रूप से मौजूद हैं जहां केवल एक चीज जो वे अच्छी हैं, वह बग पैदा कर रही है। –
सी # वास्तव में वास्तव में DRY का पालन नहीं करता है। यह परेशान हो सकता है लेकिन ... ईमानदारी से, आप मुझे नहीं बता सकते कि आप 'सार्वजनिक', 'संरक्षित', और 'निजी' टाइप करने से थक गए नहीं हैं? –
@ SlippD.Thompson: यह एक और क्षेत्र है जहां सी ++ वास्तव में आसान भाषाओं की तुलना में कम * शब्दशः है ... पिछली बार मैंने देखा है कि व्युत्पन्न वर्ग में आधार रचनाकारों को उजागर करने के बारे में था। –