Наследование от Dictionary(Of TKey, TValue)
, как правило, неправильно: обычно составлять коллекцию лучше, чем наследовать от нее.
Однако выв основном нужно убедиться, что в словаре используется регистр без учета регистра - что вы делаете, передавая что-то вроде StringComparer.OrdinalIgnoreCase
в соответствующую перегрузку конструктора для Dictionary
.Тщательно продумайте, в какой культуре вы хотите выполнить сравнение, если оно есть.
Вы можете сделать это либо в существующем классе, написав конструктор, который вызывает MyBase.New(StringComparer.OrdinalIgnoreCase)
:
Public Class SerializableDictionary(Of TValue)
Inherits Dictionary(Of String, TValue)
Implements IXmlSerializable
Public Sub New()
MyBase.New(StringComparer.OrdinalIgnoreCase)
End Sub
End Class
Обратите внимание, что исправление для использования string
типа ключа - было бы немного необычно для него "знать" об одном конкретном типе ключа отдельно, но все же быть универсальным.
Или вы можете просто передать егов конструктор как обычно, если вы идете с составным маршрутом.