2011-07-13 46 views
4

我試圖創建一個基於lambda函數返回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 

所以我的問題是,我可以輸入擴展方法的方式,讓我使用我期待的單線風格?那就是說,如何輸入擴展方法來接受匿名方法?

回答

2

坦率地說,我不認爲這是可能的。

+0

這就是我的想法,但我想也許有什麼我沒有看到這裏。 – Kratz