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


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

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

Extension method '<methodname>' has type constraints that can never be satisfied

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

'' 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

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

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

См. также

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

Методы расширения (Visual Basic)

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