自定义ToString扩展无法正常工作 - VB.NET

时间:2012-04-18 10:38:02

标签: .net extension-methods tostring

我有以下代码

Module StringExtensions

<Extension()>
Public Function ToString(ByVal e As Elements) As String
    Return e(0).ToString()
End Function

<Extension()>
Public Function ToString(ByVal e As List(Of Element)) As String
    e.ToString("|")
End Function

<Extension()>
Public Function ToString(ByVal e As List(Of Element), ByVal delim As String = "|") As String
    Dim s As String = ""
    For Each e1 As Element In e
        s = String.Join(delim, s, IIf(e1.Terminal, "!", "") & e1.Name)
    Next e1
    Return s.TrimStart(delim).TrimEnd(delim)
End Function

End Module

Class Elements
Inherits List(Of Element)
'...Various properties and methods
End Class
Class Element
'...Various Properties and methods
End Class

我的问题:

由于某种原因,只能调用带有delim变量的ToString扩展。 VS2010甚至不会显示还有其他任何一个。 我试过只有两个ToString中的一个没有变量输入

为什么会这样?

我正在使用类似的设置与不同的类,这工作正常。 据我所知,我没有做任何错误的语法。

1 个答案:

答案 0 :(得分:3)

.NET中的每个类都从根基类ToString()继承object。与成员方法具有完全相同签名的扩展方法未显示,无法使用扩展方法语法调用。