我正在尝试创建一个扩展方法,该方法返回基于 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
所以我的问题是,我可以以一种允许我使用我正在寻找的单行样式的方式键入扩展方法吗?也就是说,如何键入扩展方法来接受匿名方法?
最佳答案
坦白说,我认为这是不可能的。
关于vb.net - 匿名函数的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684045/