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


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

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

Cannot implement '<interfacename1>.<membername>' because its implementation could conflict with the implementation for '<interfacename2>.<membername>' for some type arguments

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

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

Public Interface iFace1(Of t)
    Sub testSub()
End Interface
Public Interface iFace2(Of u)
    Inherits iFace1(Of u)
End Interface
Public Class testClass(Of y, z)
    Implements iFace1(Of y), iFace2(Of z)
    Public Sub testSuby() Implements iFace1(Of y).testSub
    End Sub
    Public Sub testSubz() Implements iFace1(Of z).testSub
    End Sub
End Class

Поскольку iFace2 наследуется от iFace1 с помощью своего собственного параметра типа (u), testClass будет реализовывать две версии iFace1.testSub с одинаковыми подписями, если одинаковые аргументы типов будет переданы y и z. Это вызовет неоднозначность в том, к какой версии получать доступ.

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

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

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

    или

  • Удалите из оператора Implements один из интерфейсов, который приводит к появлению конфликта.

См. также

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

Зарезервированное слово Implements и оператор Implements

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

Ссылки

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

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

Оператор Implements