vb.net - 匿名函数的扩展方法

标签 vb.net extension-methods anonymous-function

我正在尝试创建一个扩展方法,该方法返回基于 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/

相关文章:

c# - 如何从匿名列表中删除项目

c# - BlockingCollection worker 需要通过匿名函数返回一个值

vb.net - VB.NET 中的除法

java - 使用 VB.NET 4.5.1 客户端连接到基于 Java 的 Web 服务时出现解码错误

c# - 没有结果时如何在 Linq 中执行 "Select"

javascript - 将从匿名函数接收到的数据保存在类对象中

mysql - 将图像存储到数据库 blob;从数据库检索到 Picturebox

vb.net - 为什么我会收到变量未找到错误?

c# - 保证GC不会影响代码

c# - 如何调用动态类型的扩展方法?