文字列のテーブルから辞書を作成するルーチンがあります。正確なアプリケーションに応じて、これらの文字列は整数 ("123")、浮動小数点数 ("12.3")、または文字列 ("foo bar") を表す場合がありますが、明示的に記述した場合、有効な型はすべて文字列から直接キャストできます。たとえば、これは正常に動作します (VB.NET):
Class IntStrDict
Sub Add()
Dim k As String = "123"
Dim v As String = "foo bar"
Dim d As New Dictionary(Integer, String)
d.Add(k, v)
End Sub
End Class
しかし、このコードを一般的なものにしたいので、次のように書き直します。
Class PairDict(Of TKey, TValue)
Sub Add(k As TKey, v As TValue)
Dim k As String = "123"
Dim v As String = "foo bar"
Dim d As New Dictionary(TKey, TValue)
d.Add(k, v)
End Sub
End Class
しかし、.NET は String を TKey または TValue に直接キャストできることを認識していないため、これは機能しません。このようなクラスを宣言できる CastableFrom のようなインターフェイスはありますか?
Class PairDict(Of TKey As CastableFrom(Of String), TValue As CastableFrom(Of String))