'<derivedtypename>' non può ereditare da <type> '<constructedbasetypename>' perché espande l'accesso di tipo '<internaltypename>' all'esterno dell'assembly

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

Il codice seguente può generare questo errore.

Public Class baseClass(Of t)  
End Class  
Public Class derivedClass  
    Inherits baseClass(Of restrictedStructure)  
End Class  
Friend Structure restrictedStructure  
    Dim firstMember As Integer  
End Structure  

Il codice all'esterno dell'assembly non può accedere a restrictedStructure. L'accesso all'oggetto derivedClass , tuttavia, è consentito a qualsiasi codice che può farvi riferimento. Di conseguenza, derivedClass non può ereditare da baseClass se usa restrictedStructure come argomento di tipo perché altrimenti restrictedStructure verrebbe esposta al codice in qualsiasi assembly.

ID errore: BC30922

Per correggere l'errore

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

    oppure

  • Se non è possibile modificare i livelli di accesso, non usare il tipo limitato come argomento di tipo quando si costruisce la classe o l'interfaccia base.

Vedi anche