Попытка заставить работать анонимные методы VB. списки запросов

Я пытаюсь заставить мой код работать в соответствии с инструкциями на http://www.paulstovell.com/vb-anonymous-methods

Пока у меня есть обертка:

Public Delegate Function PredicateWrapperDelegate(Of T, A)(ByVal item As T, ByVal argument As A) As Boolean
Public Class PredicateWrapper(Of T, A)
    Private _argument As A
    Private _wrapperDelegate As PredicateWrapperDelegate(Of T, A)

    Public Sub New(ByVal argument As A, _
         ByVal wrapperDelegate As PredicateWrapperDelegate(Of T, A))
        _argument = argument
        _wrapperDelegate = wrapperDelegate
    End Sub

    Private Function InnerPredicate(ByVal item As T) As Boolean
        Return _wrapperDelegate(item, _argument)
    End Function

    Public Shared Widening Operator CType( _
        ByVal wrapper As PredicateWrapper(Of T, A)) _
       As Predicate(Of T)
        Return New Predicate(Of T)(AddressOf wrapper.InnerPredicate)
    End Operator
End Class

Затем у меня есть функция, которую я изменил, чтобы использовать переменную идентификатора моего отдела (сделал)

 Function DidMatch(ByVal item As ListDataItem, ByVal did As Integer) As Boolean
        Return item.AssigneddepartmentID.Equals(did)
    End Function

Затем я пытаюсь вызвать его из своего кода:

Dim children As List(Of String) = toplevel.FindAll(New PredicateWrapper(Of Integer, Integer)(Did, AddressOf DidMatch))

Затем я получаю сообщение об ошибке DidMatch... Метод ошибки «Общедоступная функция DidMatch (элемент как DeptMenuData, сделал как целое число) как логическое» не имеет подписи, совместимой с делегатом «Функция делегата PredicateWrapperDelegate (целое число, целое число) (элемент как целое число , аргумент Как целое число) Как логическое значение.

Вы видите, что я делаю неправильно?

Спасибо.


person Phil    schedule 01.07.2010    source источник


Ответы (1)


Сдача:

Dim children As List(Of String) = toplevel.FindAll(New PredicateWrapper(Of Integer, Integer)(Did, AddressOf DidMatch))

To:

Dim children As List(Of String) = toplevel.FindAll(New PredicateWrapper(Of ListDataItem, Integer)(Did, AddressOf DidMatch))
person Tim Schmelter    schedule 01.07.2010