我所说的非实例类型是指不公开公共构造函数的类型,因为没有更好的术语。
我想用一个重载来扩展BitConverter类,ToString()
它需要一个 type 的参数Char
,代表一个值分隔符。
为什么?默认情况下,ToString()
调用返回字节数组的字符串表示形式,由破折号分隔。签名不允许您指定不同的分隔符,我觉得这很不幸。
现在因为这不是实例类型,或者可能是因为我正在重载共享方法,所以我很难找到合适的语法来定义我的扩展方法。
我在这里做错了什么,导致重载没有显示在 IntelliSense 中:
Imports System.Runtime.CompilerServices
Module BitConverterExtensions
<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal delimiter As Char) As String
Return BitConverterExtensions.ToString(converter, value, 0, value.Length, delimiter)
End Function
<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal startIndex As Integer, ByVal delimiter As Char) As String
Return BitConverterExtensions.ToString(converter, value, startIndex, value.Length, delimiter)
End Function
<Extension()>
Public Function ToString(ByVal converter As BitConverter, ByVal value() As Byte, ByVal startIndex As Integer, ByVal length As Integer, ByVal delimiter As Char) As String
Dim bytes As String = BitConverter.ToString(value, startIndex, length)
Return bytes.Replace("-"c, delimiter)
End Function
End Module
还是根本不可能扩展共享方法?