Я пытаюсь создать метод расширения, который возвращает IEqualityComparer на основе лямбда-функции. Вот метод расширения:
<Extension()>
Public Function Comparer(Of T)(Func As Func(Of T, T, Boolean)) As IEqualityComparer(Of T)
Return New GenericComparer(Of T)(Func)
End Function
Вот то использование, которое я ищу,
Dim CICF = (Function(a As String, b As String) As Boolean
If a.ToUpper = b.ToUpper Then
Return True
Else
Return False
End If
End Function).Comparer
Компилятор сообщает об ошибке
'Comparer' is not a member of '<anonymous method>'
Если я назначу функцию явно типизированной переменной, она будет работать следующим образом:
Dim CICF As Func(Of String, String, Boolean) = (Function(a As String, b As String) As Boolean
If a.ToUpper = b.ToUpper Then
Return True
Else
Return False
End If
End Function)
Dim CIC = CICF.Comparer
Итак, мои вопросы: могу ли я ввести метод расширения таким образом, чтобы я мог использовать стиль одной строки, который я ищу? То есть, как я могу набрать метод расширения, чтобы принять анонимный метод?