我有一个从字符串表创建字典的例程。根据具体的应用,这些字符串可能表示整数(“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))