Ler em inglês

Compartilhar via


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

Uma classe ou interface derivada tenta expandir o nível de acesso de um tipo interno usando-o como um argumento de tipo para uma classe base ou interface.

O código a seguir pode gerar esse erro.

VB
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  

O 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 pode herdar baseClass se ele usa internalStructure como um argumento de tipo, pois isso pode expor internalStructure em toda a região do código definidor.

ID do erro: BC30921

Para corrigir este erro

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

    -ou-

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

Confira também