型 '<internaltypename>' のアクセスを <領域> '<regionname>' へ展開しているため、'<derivedtypename>' は <型> '<constructedbasetypename>' から継承できません。

更新 : 2007 年 11 月

派生クラスまたは派生インターフェイスが、内部型を基本クラスまたは基本インターフェイスへの型引数として使用することにより、内部型のアクセス レベルを拡張しようとしています。

このエラーは次のようなコードで発生します。

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

containingClass の外部にあるコードは、internalStructure にアクセスできません。ただし、derivedClass には、同じアセンブリ内のコードからアクセスできます。したがって、derivedClass は、internalStructure を型引数として使用する場合、baseClass を継承できません。これを認めると、コードを定義する領域全体に internalStructure が公開されることになるからです。

Error ID: BC30921

このエラーを解決するには

  • クラスまたはインターフェイスのアクセス レベルを調整して、派生型が内部型のアクセス レベルを拡張しないようにします。

    または

  • アクセス レベルを調整できない場合は、基本クラスまたは基本インターフェイスを作成するときに内部型を型引数として使用しないでください。

参照

概念

継承の基本

Visual Basic でのアクセス レベル

Visual Basic におけるジェネリック型

参照

Inherits ステートメント

型リスト