我有以下代码
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中的一个没有变量输入
为什么会这样?
我正在使用类似的设置与不同的类,这工作正常。 据我所知,我没有做任何错误的语法。
答案 0 :(得分:3)
.NET中的每个类都从根基类ToString()
继承object
。与成员方法具有完全相同签名的扩展方法未显示,无法使用扩展方法语法调用。