【发布时间】:2012-05-14 15:32:36
【问题描述】:
我所说的非实例类型是指不公开公共构造函数的类型,因为没有更好的术语。
我想用ToString() 的重载扩展BitConverter 类,该类接受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
或者根本不可能扩展共享方法?
【问题讨论】:
标签: vb.net extension-methods overloading