Прочитать на английском

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


Не удается реализовать "<interfacename1>".<имя> участника, так как его реализация может конфликтуть с реализацией для< interfacename2>.<имя> участника для некоторых аргументов типа

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

Следующие операторы могут привести к этой ошибке.

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 один из интерфейсов, приводящих к появлению конфликта.

См. также