Проблема при расширении свойств класса

185
30 апреля 2018, 23:12

Создаю обёртку над SortedDictionary.

И тут возникла здоровенная проблема при присваивании значения (set):

Если я пишу this[key] = value;, то он, логично, уходит в вечный цикл. Внутренняя переменная у SortedDictionary value приватна, и я не могу её изменять.

Можно создать свою переменную value и работать с ней, но тогда большинство(все) методы из SortedDictionary перестанут работать.

Как выбраться из сложившейся дилеммы?

public class myDictionary<TKey, TValue> : SortedDictionary<TKey, TValue> {
    TValue tempValue;
    public TValue this[TKey key] {
        get {
            ...
        }
        set {
            if (Keys.Contains(key))
                this[key] = value;  << tyt          
            else {
                Add(key, value);
            }
        }
    }
}
Answer 1

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

В вашем случае - можно написать

base[key] = value;
READ ALSO
Ошибка использования using(void method())

Ошибка использования using(void method())

Не могу понять ошибки в строке - using(TimerStart())

121
WCF - Рассылка сообщений сервером

WCF - Рассылка сообщений сервером

Клиенты должны получать сообщение(одинаковое), которое рассылается с сервера, как можно это реализовать? Понимаю когда клиент может получать...

154
Эмуляция клавиатуры и мыши

Эмуляция клавиатуры и мыши

Как имитировать действия мышки и клавиатуры ?

178
Перегрузка индексатора статического класса

Перегрузка индексатора статического класса

Хотелось бы в своей программе на C# создать класс, к которому можно обратиться по типу ClassName[i], те

117