Видите ли вы проблему в этом? Потому что мы поместили туда публичный сеттер.
Так что не надо публичного сеттера.
Создайте новый класс CaseInsensitiveDictionary
, который содержит приватный Dictionary
, инициализированный с нечувствительностью к регистру. Выставляйте этот приватный Dictionary
только через методы для взаимодействия с ним (например, add, remove и т.д.) - или предоставляйте только get
доступ к нему. Вы, вероятно, захотите реализовать IEnumerable
, IDictionary
и другие интерфейсы.
public sealed class CaseInsensitiveDictionary<string,TValue>
{
private Dictionary<string, TValue> _dictionary = new Dictionary<string, object>(StringComparer.InvariantCultureIgnoreCase);
// ... constructors, add, remove, etc methods
}
Везде, где вы используете Dictionary
сейчас, замените его на этот новый класс. Если вам нужно обрабатывать десериализацию JSON и т.д., вы можете предоставить методы для этого в новом классе.
Это похоже на то, что делается в .NET framework - например, Dictionary
vs SortedList
- новый класс создается, когда необходимо ограничение (упорядочивание).
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: