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


Метода расширения <имяМетода>, определенный в <имяТипа>, имеет отличную от делегата <имяДелегата> сигнатуру

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

Extension method '<methodName>' defined in '<typeName>' does not have the same signature as delegate '<delegateName>'

Существует несоответствие между сигнатурами метода и делегата, попытка использования которого предпринимается. Типы параметров и значения, возвращаемые классом делегата, определяются оператором Delegate. Для создания экземпляра данного типа делегата может использоваться любая процедура с соответствующими типами параметров и типом возвращаемого значения. В следующем примере ошибка возникает из-за несоответствия сигнатуры метода Example и сигнатуры делегата Del.

' Definition of the delegate, with two parameters.
Delegate Sub Del(ByVal m As Integer, ByVal s As String)
' Definition of the extension method, with one parameter.
<Extension()> _
Sub Example(ByVal s As String)
    ' Body of the Sub.
End Sub
'' This assignment causes the error.
' Dim exampleDel As Del = AddressOf Example

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

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

  • Проверьте, что делегат и метод имеют одинаковое число параметров.

  • Проверьте, что параметры делегата и метода расположены в одинаковом порядке.

  • Проверьте типы соответствующих параметров делегата и метода на их совместимость.

См. также

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

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

Ослабленное преобразование делегата

Ссылки

Оператор Delegate