Partilhar via


'<derivedtypename>' não pode herdar de <type>'<constructedbasetypename>' porque expande o acesso do tipo '<internaltypename>' para '<regionname>' <região>

Uma interface ou classe derivada tentativas de expandir o nível de acesso de um tipo interno, usá-lo sistema autônomo um argumento de tipo para uma classe base ou interface.

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

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

Código externo containingClass não tem permissão para acessar internalStructure. No entanto, derivedClass pode ser acessado de qualquer código no mesmo assembly. Portanto, derivedClass não é possível herdar baseClass Se ele usar internalStructure sistema autônomo um argumento de tipo, porque o que pode expor internalStructure em toda a região de código de definição.

ID de erro: BC30921

Para corrigir este erro

  • Ajuste os níveis de acesso das interfaces ou classes para que o tipo derivado não expande o nível de acesso do tipo interno.

    - ou -

  • Se você não pode ajustar sistema autônomo níveis de acesso, não use o tipo interno sistema autônomo um argumento de tipo ao 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