'<derivedtypename>' 無法繼承自 <type> '<constructedbasetypename>',因為它會將型別 '<internaltypename>' 的存取展開至 <region> '<regionname>'

更新:2007 年 11 月

衍生類別 (Derived Class) 或介面會嘗試展開內部型別的存取層級,做法便是使用內部型別做為基底類別 (Base Class) 或介面的型別引數。

下列程式碼會產生此錯誤。

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,因為這麼做可能會公開 (Expose) 整個定義程式碼區域內的 internalStructure。

錯誤 ID:BC30921

若要更正這個錯誤

  • 調整類別或介面的存取層級,以便衍生型別不會展開內部型別的存取層級。

    -或-

  • 如果無法調整存取層級,請不要在建構基底類別或介面時,使用內部型別做為型別引數。

請參閱

概念

繼承基本概念

Visual Basic 中的存取層級

Visual Basic 中的泛型型別

參考

Inherits 陳述式

型別清單