2011-07-13 19 views
4

ラムダ関数に基づいてIEqualityComparerを返す拡張メソッドを作成しようとしています。 HERESに拡張メソッド:匿名関数の拡張メソッド

<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 

ここでは、私が明示的に入力する機能を割り当てた場合、コンパイラはエラー

'Comparer' is not a member of '<anonymous method>' 

を報告

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 

、私が探している用法でありますそれを変えることができます:

 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