Как я могу наследовать словарь?
Я хочу все функциональные возможности 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();