'<derivedtypename>' no puede heredar de <type> '<constructedbasetypename>' porque amplía el acceso del tipo '<internaltypename>' fuera del ensamblado

Una clase o interfaz derivada intenta ampliar el nivel de acceso de un tipo restringido. 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 baseClass(Of t)  
End Class  
Public Class derivedClass  
    Inherits baseClass(Of restrictedStructure)  
End Class  
Friend Structure restrictedStructure  
    Dim firstMember As Integer  
End Structure  

El código situado fuera del ensamblado no puede acceder a restrictedStructure. Sin embargo, se puede acceder a derivedClass desde cualquier código que pueda hacer referencia a este. Por lo tanto, derivedClass no puede heredar baseClass si usa restrictedStructure como un argumento de tipo, porque ello podría exponer restrictedStructure al código de cualquier ensamblado.

Identificador de error: BC30922

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 restringido.

    O bien

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

Consulte también