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

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


Метод расширения "<methodname>" имеет ограничения типа, которые никогда не могут быть удовлетворены

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

'' Not valid.  
'<Extension()> _  
'Sub extensionExample(Of T As U, U)(ByVal para1 As T, ByVal para2 As U)  
'End Sub  

Поскольку этот метод является методом расширения, компилятор должен уметь определить тип или типы данных, которые расширяет метод, на основе только первого параметра в объявлении метода para1и аргумента, переданного для этого параметра. Когда первый параметр ссылается на параметры универсального типа para1 as T, ограничения универсальных параметров допускают в наборе типов только те типы, к которым применяется метод.

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

'' Not valid.

'arg1.extensionExample(arg2)

Должна существовать возможность проверки ограничений для всех параметров универсального типа, на которые ссылается первый параметр para1, путем просмотра только первого аргумента arg1. В extensionExampleрасширяемый набор типов нельзя определить только из первого параметра. Параметр типа T ограничен параметром типа U, на который не ссылается para1 , и он не может быть выведен из arg1. Таким образом, применимость этого метода для любых возможных типов не может быть проверена и метод никогда не сможет быть вызван.

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

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

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

См. также