'<DerivedTypeName>' não pode herdar do <tipo> '<ConstructedBaseTypeName>' porque expande o acesso do tipo '<internalTypeName>' à <região> '<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.

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 fora containingClass não é permitido para acessar internalStructure. No entanto, derivedClass pode ser acessado a partir de qualquer código no mesmo assembly. Portanto, derivedClass não pode herdar baseClass se ele usa internalStructure como um argumento de tipo, porque isso pode expor internalStructure toda a região de código definidora.

ID de 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.

    -or-

  • Se não for possível 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.

Consulte também