'<derivedtypename>' non può ereditare da <type> '<constructedbasetypename>' perché espande l'accesso di tipo '<internaltypename>' a <region> '<regionname>'

Una classe o un'interfaccia derivata prova a espandere il livello di accesso di un tipo interno usandolo come argomento di tipo per una classe o un'interfaccia base.

Il codice seguente 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 derivedClass non può ereditare baseClass se usa internalStructure come argomento di tipo, perché 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 usare il tipo interno come argomento di tipo durante la costruzione della classe o dell'interfaccia base.

Vedi anche