'<nometipoderivato>' non può ereditare da <tipo> '<nometipobasecreato>' perché espande l'accesso di tipo <nometipointerno> all'esterno dell'assembly

Aggiornamento: novembre 2007

'<derivedtypename>' cannot inherit from <type> '<constructedbasetypename>' because it expands the access of type '<internaltypename>' outside the assembly

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

Il seguente codice 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 utilizza 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 ristretto.

    -oppure-

  • Se non è possibile modificare i livelli di accesso, non utilizzare il tipo ristretto come argomento di tipo quando si costruisce la classe o l'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