2012-08-27 15 views
5

Tengo el código abajo y yo estoy tratando de hacer algunos ejercicios de herencia, pero cuando trato de ejecutar este código me da un error:Accessability inconsistente: Clase base es menos accesible que la clase

Inconsistent Accessability: Base Class is less accessible than class 

El código:

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

} 

qué alguien me pueda ayudar?

+0

Agregue la definición de la clase de productos, específicamente la línea de declaración. Supongo que se declaró privado. – Khepri

Respuesta

3

Probablemente la clase Products no es pública. Agregue public a la definición de clase Products.

Si usted tiene algo así como:

class Products { 
... 
} 

El compilador de C# interpreta la clase Products como internos.

+0

La visibilidad predeterminada para las clases es ['internal'] (http://stackoverflow.com/questions/3763612/default-visibility-for-c-sharp-classes-and-members-fields-methods-etc). –

+0

Soy corregido. Gracias por mencionarlo. – Candide

12

¿En qué línea está el error y cuál es el texto de error específico? Además, ¿dónde está la definición de Products?

Usted probablemente está recibiendo CS0060: "accesibilidad inconsistente: clase base 'class1' es menos accesible que la clase 'clase 2'" Por lo tanto, estoy asumiendo que su clase Products no está marcado como public.

Este problema ocurre cuando una clase base está marcada como algo distinto de public (internal, por ejemplo), pero luego intenta hacer una clase derivada public.

+3

Sea genial para explicar por qué esto no está permitido, es decir, qué está mal con una clase pública que hereda de una clase base oculta. – dumbledad

2

Agregue la directiva public a la clase que intenta heredar.

0

Eso ocurre cuando, por ejemplo, la clase base es privada, pero la clase derivada es pública. Una contradicción, por así decirlo.

0
public class Products 

Haga su clase pública (como se muestra arriba) para que sea heredada o accesible.

0

esto significa que si desea una clase infantil pública, la clase principal también debe ser pública.

4

Sólo para referencia futura para alguien gruesa como yo, tengo esto en la siguiente situación y no podía entender lo que estaba pasando mal:

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

public class Base<T> {} 

Me tomó un tiempo para saber que el culpable fue aquí:

internal class Bar {} 
0

una de las razones probables para este problema puede ser, usted tiene más de una clase principal, Asegúrese de que tiene sólo una clase principal.

Cuestiones relacionadas