Leer en inglés

Compartir a través de


"<nombreTipoDerivado>" no puede heredar del <tipo> "<nombreTipoBaseConstruido>" porque amplía el acceso del tipo "<nombreTipoInterno>" a la <región> "<nombreRegión>"

Una clase o interfaz derivada intenta ampliar el nivel de acceso de un tipo interno. Para ello, lo usa como un argumento de tipo para una clase base o una interfaz.

El código siguiente puede generar este error.

Public Class containingClass  
    Public Class baseClass(Of t)  
    End Class  
    Friend Class derivedClass  
        Inherits baseClass(Of internalStructure)  
    End Class  
    Private Structure internalStructure  
        Dim firstMember As Integer  
    End Structure  
End Class  

El código situado fuera de containingClass no tiene permitido acceder a internalStructure. Sin embargo, se puede acceder a derivedClass desde cualquier código del mismo ensamblado. Por lo tanto, derivedClass no puede heredar baseClass si usa internalStructure como un argumento de tipo, porque podría exponer internalStructure en toda la región de código de definición.

Identificador de error: BC30921

Para corregir este error

  • Ajuste los niveles de acceso de las clases o las interfaces para que el tipo derivado no amplíe el nivel de acceso del tipo interno.

    O bien

  • Si no puede ajustar los niveles de acceso, no use el tipo interno como argumento de tipo al construir la clase base o la interfaz.

Consulte también