2009-02-07 81 views
23

¿Qué pasa con el siguiente código C#? informes Compiler este error:Error de accesibilidad incoherente con el siguiente código C#. ¿Por qué?

accesibilidad inconsistente: tipo de parámetro 'ClassLibrary1.Interface1' es menos accesible que el método 'ClassLibrary1.Class1.Class1 (ClassLibrary1.Interface1)'

con el siguiente código:

interface Interface1<T> 
{ 
    bool IsDataValid(); 
    /* Other interfaces */ 
} 

public class Class1<T> 
{ 
    public Interface1<T> interface1; 

    public Class1(Interface1<T> interface1) 
    { 
     this.interface1 = interface1; 
    } 

} 

Desde entonces, he diseñado mi código de forma diferente utilizando inheritence, pero si alguien pudiera decirme que es incorrecto, lo agradecería mucho.

Respuesta

49

su "Interface1" no es pública ..

public interface Interface1<T> 
{ 
    bool IsDataValid(); 
    /* Other interfaces */ 
} 
+1

doh. Gracias. Eso fue tan obvio que me siento avergonzado. Es gracioso a veces cómo no ves lo deslumbrantemente obvio. – Crippeoblade

+0

Jeje ... no te preocupes. – Sciolist

+1

En VS2010, agregué el público después de crear la clase y tuve que limpiar el proyecto para deshacerme de este error. – teynon

5

Marque su interfaz pública como:

public interface Interface1<T>

Si se omite la etiqueta de accesibilidad, el valor predeterminado es internal, que es, solo accesible para otras clases dentro del ensamblado.

1

segunda solución es Si su interfaz no es pública, no haga pública su clase donde está haciendo un manejo de interfaz.

Cuestiones relacionadas