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


Невозможно наследовать интерфейс <имяИнтерфейса1>, так как интерфейс <имяИнтерфейса2>, от которого он наследуется, может совпадать с интерфейсом <имяИнтерфейса3>, от которого наследуется интерфейс <имяИнтерфейса4> для некоторых аргументов типа

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

Cannot inherit interface '<interfacename1>' because the interface '<interfacename2>' from which it inherits could be identical to interface '<interfacename3>' from which the interface '<interfacename4>' inherits for some type arguments

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

Эта ошибку могут вызвать следующие операторы.

Public Interface interfaceA(Of u)
End Interface
Public Interface interfaceX(Of v)
    Inherits interfaceA(Of v)
End Interface
Public Interface interfaceY(Of w)
    Inherits interfaceA(Of w)
End Interface
Public Interface derivedInterface(Of t1, t2)
    Inherits interfaceX(Of t1), interfaceY(Of t2)
End Interface

Если derivedInterface формируется или предоставляется одним и тем же типом для t1 и t2, он должен наследовать две версии interfaceA с одинаковыми аргументами типа. Это вызовет неоднозначность в том, к какой версии получать доступ.

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

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

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

    или

  • Удалите из оператора Inherits один из интерфейсов, вызывающих возможное наследование или конфликт реализации.

См. также

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

Общие сведения об интерфейсах

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

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

Ссылки

Оператор Interface (Visual Basic)

Инструкция Inherits