Partager via


'<NomTypeDérivé>' ne peut pas hériter de <type> '<NomTypeConstruitDeBase>', car il étend l'accès du type '<NomTypeInterne>' en <région> '<NomRégion>'

Mise à jour : novembre 2007

'<derivedtypename>' cannot inherit from <type> '<constructedbasetypename>' because it expands the access of type '<internaltypename>' to <region> '<regionname>'

Une classe ou une interface dérivée essaie d'étendre le niveau d'accès d'un type interne en l'utilisant comme argument de type dans une classe ou une interface de base.

Le code suivant peut générer ce message d'erreur.

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

Le code à l'extérieur de containingClass n'est pas autorisé à accéder à internalStructure. Toutefois, derivedClass est accessible à partir de n'importe quel code dans le même assembly. Par conséquent, derivedClass ne peut pas hériter de baseClass s'il utilise internalStructure comme argument de type, car cela peut exposer internalStructure dans l'ensemble de la zone de code de définition.

ID d'erreur : BC30921

Pour corriger cette erreur

  • Modifiez les niveaux d'accès des classes ou des interfaces afin que le type dérivé n'étende pas le niveau d'accès du type interne.

    - ou -

  • Si vous ne pouvez pas modifier les niveaux d'accès, n'utilisez pas le type interne comme argument de type lors de la construction de la classe ou de l'interface de base.

Voir aussi

Concepts

Éléments fondamentaux de l'héritage

Niveaux d'accès dans Visual Basic

Types génériques en Visual Basic

Référence

Inherits, instruction

Liste de types