Как я могу наследовать словарь?

Я хочу все функциональные возможности Dictionary<TKey,TValue>, но хочу, чтобы он был как Foo<TKey,TValue>.

Как мне это сделать?
В настоящее время я использую

class Foo<TKey,TValue> : Dictionary<TKey, TValue>
{   
    /*
     I'm getting all sorts of errors because I don't know how to 
     overload the constructors of the parent class.
    */
    // overloaded methods and constructors goes here.

    Foo<TKey,TValue>():base(){}
    Foo<TKey,TValue>(int capacity):base(capacity){}

}

Каков правильный способ перегрузки конструкторов и методов родительского класса?

ПРИМЕЧАНИЕ. Я думаю, что я неправильно использовал слово "перегрузка", пожалуйста, исправьте его или предложите исправление.

Ответы

Ответ 1

Вы были близки, вам просто нужно удалить параметры типа из конструкторов.

class Foo<TKey,TValue> : Dictionary<TKey, TValue>
{   
    Foo():base(){}
    Foo(int capacity):base(capacity){}
}

Чтобы переопределить метод, вы можете использовать ключевое слово переопределения.

Ответ 2

Непосредственно отвечая на ваш вопрос, просто совет. Я бы не наследовал словарь, я бы реализовал IDictionary<T,K> и объединил словарь. Это, скорее всего, лучшее решение:

class Foo<TKey,TValue> : IDictionary<TKey, TValue>
{   

    private Dictionary<TKey, TValue> myDict;

    // ...
}

Ответ 3

Если вам нужен только тот же тип, но с другим именем, вы можете сократить его с помощью using псевдоним:

using Foo = System.Collections.Generic.Dictionary<string, string>;

а затем

Foo f = new Foo();