非インスタンス型とは、より適切な用語がないため、パブリック コンストラクターを公開しない型を意味します。
値の区切り記号を表すtype のパラメーターを取る のオーバーロードでBitConverterクラスを拡張したいと考えています。ToString()
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
それとも、共有メソッドを拡張することは単に不可能ですか?