Метод расширения для анонимной функции - PullRequest
4 голосов
/ 13 июля 2011

Я пытаюсь создать метод расширения, который возвращает 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

Итак, мои вопросы: могу ли я ввести метод расширения таким образом, чтобы я мог использовать стиль одной строки, который я ищу? То есть, как я могу набрать метод расширения, чтобы принять анонимный метод?

1 Ответ

2 голосов
/ 15 июля 2011

Честно говоря, я не думаю, что это возможно.

...