Partilhar via


'<derivedtypename>' não pode herdar de <type>'<constructedbasetypename>' porque expande o acesso do tipo '<internaltypename>' fora do assembly

Uma classe derivada ou interface tenta expandir onível de acesso de um tipo restrito usando-o como um argumento de tipo a uma classe base ou interface.

O código a seguir pode gerar este tipo de erro.

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

Código fora do assembly não é pemitido que acesse restrictedStructure.Entretanto, derivedClass pode ser acessado de qualquer código que pode fazer referência a ele.Por isso, derivedClass não pode herdar baseClass se este usa restrictedStructure como um argumento de tipo, porque aquilo poderia expor restrictedStructure a código em qualquer assembly.

ID de erro: BC30922

Para corrigir este erro

  • Ajuste os níveis de acesso das classes ou intefaces de modo que o tipo derivaod não expanda o nível de acesso do tipo restrito.

    - ou -

  • Se você não pode ajustar os níveis de acesso, não use o tipo restrito como um argumento de tipo quando construir a classe base ou interface.

Consulte também

Conceitos

Noções básicas de herança

Níveis de acesso em Visual Basic

Tipos genéricos no Visual Basic

Referência

Declaração Inherits

Lista de tipos