'<nometipoderivato>' non può ereditare da <tipo> '<nometipodibasecostruito>' perché espande l'accesso di tipo '<nometipointerno>' a <regione> '<nomeregione>'

Aggiornamento: novembre 2007

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

Una classe o un'interfaccia derivata sta cercando di espandere il livello di accesso di un tipo interno, utilizzandolo come argomento di tipo per una classe o un'interfaccia di base.

Il seguente codice di esempio può generare questo errore.

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

Al codice esterno a containingClass non è consentito l'accesso a internalStructure. Tuttavia, è possibile accedere a derivedClass da qualsiasi codice nello stesso assembly. Per questo motivo non è possibile che derivedClass erediti baseClass se utilizza internalStructure come argomento di tipo, in quanto ciò potrebbe esporre internalStructure in tutta la regione del codice di definizione.

ID errore: BC30921

Per correggere l'errore

  • Regolare i livelli di accesso delle classi o delle interfacce in modo che il tipo derivato non espanda il livello di accesso del tipo interno.

    -oppure-

  • Se non è possibile regolare i livelli di accesso, non utilizzare il tipo interno come argomento di tipo durante la costruzione della classe o dell'interfaccia base.

Vedere anche

Concetti

Nozioni fondamentali sull'ereditarietà

Livelli di accesso in Visual Basic

Tipi generici in Visual Basic

Riferimenti

Istruzione Inherits

Elenco dei tipi