2012-11-07 13 views
10

से बेस क्लास कम पहुंच योग्य है इसलिए मेरे पास एक डीएलएल और उस वर्ग के बाल वर्ग में एक सार आधार वर्ग है। मैं चाहता हूं कि बच्चे सार्वजनिक हों, लेकिन आधार निजी होना चाहिए ताकि इसे डीएल के बाहर तक पहुंचाया जा सके।असंगत पहुंच: कक्षा

मैं यह कैसे कर सकता हूं?

उत्तर

22

आप नहीं करते और आप नहीं कर सकते हैं।

यदि आप कक्षा को public के रूप में बेनकाब करना चाहते हैं, तो बेस-टाइप public होना चाहिए। एक अन्य विकल्प public interface होना है, और केवल interface (संभवत: उदाहरण बनाने के लिए फ़ैक्टरी विधि के साथ) के माध्यम से प्रकार का खुलासा करना है।

एक अंतिम विकल्प को प्राप्त करने के बजाए बेस-क्लास को समाहित करता है।

+0

या बेस क्लास पर सभी विधियों/गुणों को संरक्षित किया जाना चाहिए? लेकिन कक्षा खुद सार्वजनिक हो? – Liam

+0

@ लीम जो निर्भर करता है कि आप किसके खिलाफ सुरक्षा करने की कोशिश कर रहे हैं; उदाहरण के लिए, यदि बाहरी कोई * subclass * कर सकता है, तो उनके पास उन विधियों तक पहुंच है। –

+0

सच, आंतरिक काम करेगा? निश्चित नहीं? – Liam

1

बस स्पष्ट करने के लिए मैं @Marc बजरी के जवाब पर टिप्पणी में जो कह रहे हैं आप

public ChildClass : ParentClass 
{ 

} 

public ParentClass 
{ 
    internal void MethodIdontWantToExpose() 
    { 

    } 

} 

कहा कि एक interface शायद सबसे अच्छा समाधान है

9

यह public कर सकता है, सभी कंस्ट्रक्टर्स बनाने internal (यदि आप डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग कर रहे हैं, तो इसे ओवरराइड करने के लिए पैरामीटर रहित कन्स्ट्रक्टर जोड़ें)।

फिर सार्वजनिक और सील नहीं होने पर, इसे बाहरी कोड द्वारा उप-वर्गीकृत नहीं किया जा सकता है।

संबंधित मुद्दे