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


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

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

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

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

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

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

Для кода за пределами сборки не разрешен доступ restrictedStructure. Однако к derivedClass доступ может осуществляться из любого кода, который может на его ссылаться. Таким образом, derivedClass не может наследовать baseClass, если он использует restrictedStructure в качестве аргумента типа, поскольку это сделает видимой restrictedStructure для кода в любой сборке.

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

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

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

    либо

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

См. также

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

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

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

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

Ссылки

Инструкция Inherits

Список типов