Поделиться через


<имяПроизводногоТипа> не может наследовать <тип><имяCозданногоБазовогоТипа>, поскольку он расширяет область доступа типа <имяВнутреннегоТипа> до <область> <имяОбласти>

Обновлен: Ноябрь 2007

'<derivedtypename>' cannot inherit from <type> '<constructedbasetypename>' because it expands the access of type '<internaltypename>' to <region> '<regionname>'

Производный класс или интерфейс пытается расширить уровень доступа внутреннего типа, используя его как аргумент типа к базовому классу или интерфейсу.

Следующий код может вызвать эту ошибку.

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 не может наследовать baseClass, если он использует internalStructure в качестве аргумента типа, поскольку это может предоставить internalStructure по всей области кода определения.

Идентификатор ошибки: BC30921

Исправление этой ошибки

  • Настройте уровни доступа классов или интерфейсов таким образом, что производный тип не расширял уровень доступа внутреннего типа.

    -либо-

  • Если не удается настроить уровни доступа, не используйте внутренние типы в качестве аргументов типа при создании базового класса или интерфейса.

См. также

Основные понятия

Основы наследования

Уровни доступа в Visual Basic

Универсальные типы в Visual Basic

Ссылки

Инструкция Inherits

Список типов