2012-08-27 14 views
5

मैं कोड के नीचे मिल गया है की तुलना में कम सुलभ है और मैं कुछ विरासत व्यायाम करने की कोशिश कर रहा हूँ, लेकिन जब मैं इस कोड यह मुझे एक त्रुटि देता है चलाने का प्रयास:असंगत पहुंच-योग्यता: बेस कक्षा वर्ग

Inconsistent Accessability: Base Class is less accessible than class 

कोड:

class Program 
{ 
    static void Main() 
    { 

     FoodProducts Test = new FoodProducts(); 

     Test.Limit(); 



    } 
} 

public class FoodProducts : Products 
{ 
    public void FoodProduct() 
    { 
     Console.WriteLine("This is food product"); 
    } 

    public void Limit() 
    { 
     Console.WriteLine("This is an Attribute of a Product"); 
    } 

} 

क्या कोई मेरी मदद कर सकता है?

+0

कृपया उत्पाद श्रेणी परिभाषा, विशेष रूप से घोषणा रेखा जोड़ें। मुझे लगता है कि यह निजी घोषित किया गया है। – Khepri

उत्तर

3

शायद कक्षा Products सार्वजनिक नहीं है। publicProducts कक्षा परिभाषा में जोड़ें।

आप की तरह कुछ है, तो:

class Products { 
... 
} 

सी # संकलक Products वर्ग आंतरिक रूप व्याख्या करता है।

+0

कक्षाओं के लिए डिफ़ॉल्ट दृश्यता ['आंतरिक'] है (http://stackoverflow.com/questions/3763612/default-visibility-for-c-sharp-classes-and-members-fields-methods-etc)। –

+0

मैं सही खड़ा हूँ। इस पर ध्यान दिलाने के लिए धन्यवाद। – Candide

12

किस लाइन पर त्रुटि है, और विशिष्ट त्रुटि पाठ क्या है? इसके अलावा, Products की परिभाषा कहां है?

आप शायद CS0060 हो रही है: "असंगत पहुँच: आधार वर्ग 'Class1' क्लास 'class2' से कम पहुँचा जा सकता है" इस प्रकार, मैं यह सोचते हैं रहा हूँ अपने Products वर्ग public के रूप में चिह्नित नहीं है।

यह समस्या तब होती है जब बेस क्लास को public (internal, उदाहरण के लिए) के अलावा कुछ अन्य के रूप में चिह्नित किया जाता है, लेकिन फिर आप public व्युत्पन्न कक्षा बनाने का प्रयास करते हैं।

+3

यह बताने के लिए महान बनें कि इसकी अनुमति क्यों नहीं है, यानी एक छिपी बेस क्लास से वंचित सार्वजनिक वर्ग के साथ क्या गलत है। – dumbledad

2

public उस कक्षा में निर्देश जोड़ें जिसे आप प्राप्त करने का प्रयास कर रहे हैं।

0

ऐसा होता है, उदाहरण के लिए, बेस क्लास निजी है, लेकिन व्युत्पन्न वर्ग सार्वजनिक है। बोलने के लिए एक विरोधाभास।

0
public class Products 

विरासत में या पहुंच योग्य होने के लिए आपको कक्षा सार्वजनिक (जैसा ऊपर दिखाया गया है) बनाएं।

0

इसका मतलब है कि यदि आप सार्वजनिक बाल वर्ग चाहते हैं, तो मूल वर्ग भी सार्वजनिक होना चाहिए।

4

बस मोटी मेरे जैसे किसी के लिए भविष्य में संदर्भ के लिए, मैं निम्नलिखित स्थिति में यह मिल गया और यह पता लगाने नहीं कर सकता है क्या गलत हो रहा था:

public class Foo : Base<Bar> {} <-- Inconsistent accessibility 

public class Base<T> {} 

यह मेरे कि अपराधी बाहर काम करने के कुछ समय लिया यहाँ किया गया था:

internal class Bar {} 
0

इस मुद्दा हो सकता है के लिए संभावित कारण में से एक, आप एक से अधिक मुख्य वर्ग है, सुनिश्चित करें कि आप केवल एक मुख्य वर्ग किया हुआ है।

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