72 lines
2.4 KiB
C#
72 lines
2.4 KiB
C#
|
//------------------------------------------------------------------------------
|
||
|
// <copyright file="StringDictionaryWithComparer.cs" company="Microsoft">
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
// </copyright>
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
// StringDictionary compares keys by converting them to lowercase first, using the Invariant culture.
|
||
|
// This is not the right thing to do for file names, registry keys, environment variable etc.
|
||
|
// This internal version of StringDictionary accepts an IEqualityComparer and enables you to
|
||
|
// customize the string comparison to be StringComparer.OrdinalIgnoreCase for the above cases.
|
||
|
|
||
|
namespace System.Collections.Specialized {
|
||
|
using System.Runtime.InteropServices;
|
||
|
using System.Diagnostics;
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.ComponentModel.Design.Serialization;
|
||
|
using System.Globalization;
|
||
|
|
||
|
[Serializable]
|
||
|
internal class StringDictionaryWithComparer : StringDictionary {
|
||
|
|
||
|
public StringDictionaryWithComparer() : this(StringComparer.OrdinalIgnoreCase) {
|
||
|
}
|
||
|
|
||
|
public StringDictionaryWithComparer(IEqualityComparer comparer) {
|
||
|
ReplaceHashtable(new Hashtable(comparer));
|
||
|
}
|
||
|
|
||
|
public override string this[string key] {
|
||
|
get {
|
||
|
if( key == null ) {
|
||
|
throw new ArgumentNullException("key");
|
||
|
}
|
||
|
|
||
|
return (string) contents[key];
|
||
|
}
|
||
|
set {
|
||
|
if( key == null ) {
|
||
|
throw new ArgumentNullException("key");
|
||
|
}
|
||
|
|
||
|
contents[key] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void Add(string key, string value) {
|
||
|
if( key == null ) {
|
||
|
throw new ArgumentNullException("key");
|
||
|
}
|
||
|
|
||
|
contents.Add(key, value);
|
||
|
}
|
||
|
|
||
|
public override bool ContainsKey(string key) {
|
||
|
if( key == null ) {
|
||
|
throw new ArgumentNullException("key");
|
||
|
}
|
||
|
|
||
|
return contents.ContainsKey(key);
|
||
|
}
|
||
|
|
||
|
public override void Remove(string key) {
|
||
|
if( key == null ) {
|
||
|
throw new ArgumentNullException("key");
|
||
|
}
|
||
|
|
||
|
contents.Remove(key);
|
||
|
}
|
||
|
}
|
||
|
}
|