„<derivedtypename>“ kann nicht von <Typ> „<constructedbasetypename>“ erben, da es den Zugriff von Typ „<internaltypename>“ auf „<region>“ „<regionname>“ erweitert

Eine abgeleitete Klasse oder Schnittstelle versucht, die Zugriffsebene eines internen Typs zu erweitern, indem sie diesen als Typargument für eine Basisklasse oder Schnittstelle verwendet.

Dieser Fehler kann durch folgenden Code generiert werden.

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  

Code außerhalb der containingClass darf nicht auf die internalStructurezugreifen. Allerdings kann jeder Code in derselben Assembly auf die derivedClass zugreifen. Daher kann die derivedClass die baseClass nicht erben, wenn sie die internalStructure als Typargument verwendet, da auf diese Weise die internalStructure in der gesamten definierenden Coderegion verfügbar gemacht würde.

Fehler-ID: BC30921

So beheben Sie diesen Fehler

  • Passen Sie die Zugriffsebenen der Klassen oder Schnittstellen so an, dass der abgeleitete Typ die Zugriffsebene des internen Typs nicht erweitert.

    Oder

  • Wenn Sie die Zugriffsebenen nicht anpassen können, verwenden Sie beim Erstellen der Basisklasse oder Schnittstelle den internen Typ nicht als Typargument.

Siehe auch