व्यक्तिगत रूप से मैं संरक्षित चुनूंगा। यदि आपकी खुद की असेंबली में उप-वर्ग विधि को कॉल करने के लिए पर्याप्त हैं, तो दूसरी असेंबली में उप-वर्ग क्यों नहीं होगा? शायद आप कार्यक्षमता को एक अलग (आंतरिक) कक्षा में पूरी तरह से दोबारा कर सकते हैं।
आपको वास्तव में विधि के उद्देश्य के बारे में सोचने की आवश्यकता है। आंतरिक पहुंच लगभग हमेशा मुझे गलत लगता है। अधिकांशतः मेरे अनुभव की वजह से .NET ढांचे में नियंत्रण या कक्षाओं से प्राप्त करने की कोशिश की जा रही है, जहां मैं एक ईंट की दीवार में भाग गया क्योंकि किसी ने
कक्षा या
विधि को आंतरिक के रूप में चिह्नित करने का निर्णय लिया था। मूल लेखक ने कभी नहीं देखा कि उस विधि तक पहुंच न होने से उप-वर्ग को लागू करने के लिए चीजें कठिन होती हैं।
संपादित
स्पष्ट करने के लिए, एक वर्ग के लिए आंतरिक पहुंच बहुत उपयोगी है और मैं में सामान्य बुरा है आंतरिक जिसका अर्थ नहीं था। मेरा मुद्दा यह था कि अन्यथा सार्वजनिक कक्षा में आंतरिक तरीके मेरे लिए गलत लगती है। एक उचित ढंग से डिज़ाइन की गई बेस क्लास को उसी असेंबली में व्युत्पन्न कक्षाओं के लिए अनुचित लाभ नहीं देना चाहिए।
** संभवतः एक तीसरी पसंद है। ** ओपी * पूरे वर्ग * आंतरिक बना सकता है, जिस स्थिति में विधि पर 'संरक्षित' पहुंच वांछित व्यवहार प्राप्त करेगी। असेंबली के बाहर कोड सार्वजनिक इंटरफ़ेस के माध्यम से वर्ग की कार्यक्षमता तक पहुंच सकता है। यह ओपी के वांछित व्यवहार को प्राप्त करने के लिए पर्याप्त हो सकता है। नुकसान, निश्चित रूप से, यह है कि असेंबली के बाहर सभी विरासत निषिद्ध होगी ... लेकिन ओपी स्पष्ट रूप से संकेत नहीं देता है कि यह एक आवश्यकता है। – LBushkin