2012-08-27 9 views
5

ich den Code unten habe und ich versuche, einige Vererbungs Übungen zu tun, aber wenn ich versuche, diesen Code ausführen es mir einen Fehler gibt:Uneinheitliche Barrierrefreiheit: Basisklasse ist weniger zugänglich als Klasse

Inconsistent Accessability: Base Class is less accessible than class 

Der Code:

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"); 
    } 

} 

Würde mir jemand in der Lage sein, zu helfen?

+0

Fügen Sie die Produktklassendefinition hinzu, insbesondere die Deklarationszeile. Ich schätze, es ist privat erklärt. – Khepri

Antwort

3

Wahrscheinlich ist die Klasse Products nicht öffentlich. Fügen Sie public zur Products Klassendefinition hinzu.

Wenn Sie so etwas wie haben:

class Products { 
... 
} 

Der C# Compiler interpretiert die Products Klasse als interne.

+0

Die Standardsichtbarkeit für Klassen ist ['internal'] (http://stackoverflow.com/questions/3763612/default-visibility-for-c-sharp-classes-and-members-fields-methods-etc). –

+0

Ich stehe korrigiert. Danke, dass du es aufgezeigt hast. – Candide

12

In welcher Zeile ist der Fehler aktiviert und was ist der spezifische Fehlertext? Auch, wo ist die Definition von Products?

Sie sind wahrscheinlich CS0060 bekommen: „Uneinheitliche Zugänglichkeit: Basisklasse‚class1‘ist weniger zugänglich als Klasse‚klasse2‘“ So, ich bin Ihre Products Klasse unter der Annahme, markiert nicht als public.

Dieses Problem tritt auf, wenn eine Basisklasse als etwas anderes als public markiert (internal, zum Beispiel), aber dann versuchen Sie eine public abgeleiteten Klasse zu machen.

+3

Lassen Sie sich erklären, warum dies nicht erlaubt ist, d. H. Was mit einer öffentlichen Klasse falsch ist, die von einer versteckten Basisklasse erbt. – dumbledad

2

Fügen Sie die public-Direktive der Klasse hinzu, von der Sie versuchen zu erben.

0

Das passiert, wenn zum Beispiel die Basisklasse privat ist, aber die abgeleitete Klasse öffentlich ist. Ein Widerspruch, sozusagen.

0
public class Products 

Machen Sie Ihre Klasse öffentlich (wie oben gezeigt), damit sie vererbt oder zugänglich ist.

0

Dies bedeutet, wenn Sie eine öffentliche Kindklasse wünschen, muss die Elternklasse auch öffentlich sein.

4

Gerade für zukünftige Referenz für jemanden wie mich dick, habe ich dies in der folgenden Situation und kann nicht herausfinden, was schiefgehen:

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

public class Base<T> {} 

Ich brauchte eine Weile, dass der Täter zu arbeiten, hier wurde:

internal class Bar {} 
0

einer der wahrscheinliche Grund für dieses Problem sein kann, mehr als eine Hauptklasse haben, stellen Sie sicher, dass Sie nur eine Hauptklasse haben.

Verwandte Themen