キーの大文字小文字比較を無視するジェネリクス辞書

IDictionaryを実装するが、キーとなるstringに関しては大文字小文字の区別をしない辞書をを作りたい。(大体、何に使うか想像が付くだろう)
幸いにも以下のようにそれ用のコンストラクタがGenerics Dictionaryにあったのだが、

public Dictionary (IEqualityComparer comparer)

ICompareにはCaseInsensitiveComparerが存在するが、同等のIEqualityComparer実装クラスは無いようなので書くことにした。同じくCaseInsensitiveComparerを使えば簡単に作れるのだ。

public class CaseInsensitiveEqualityComparer : IEqualityComparer
{
    public CaseInsensitiveComparer comparer;

    public CaseInsensitiveEqualityComparer()
    {
        this.comparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public CaseInsensitiveEqualityComparer(CultureInfo culture)
    {
        this.comparer = new CaseInsensitiveComparer(culture);
    }

    public new bool Equals(T x, T y)
    {
        return ( this.comparer.Compare(x, y) == 0) ? true:false;
    }

    public int GetHashCode(T obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

これで当初の目的の辞書が作れる。

IDictionary caseInsensitiveColumns = new Dictionary(new CaseInsensitiveEqualityComparer());

追記:
akirameiさんからコメントで指摘頂いた。CaseInsensitiveEqualityComparerクラスと全く同じ働きをするために、既にStringComparer.InvariantCultureIgnoreCaseが用意されているそうだ。

IDictionary caseInsensitiveColumns = new Dictionary(StringComparer.InvariantCultureIgnoreCase);

やりたいことはまったく同じだよ。 orz...

StringComparerの存在は知っていたのに自分で探せないのが恥ずかしい限り。
自分への見せしめのために、書いたクラスは暫く晒しておこうと思う。