2013-02-28 3 views
2

У меня есть абстрактный класс и пять других классов, которые наследуют его.
Я хочу провести один экземпляр Словаря в этом абстрактном классе - и дать всем другим классам возможность добавлять/удалять значения из этого Словаря.Как я могу создать словарь в корневом классе, который будет использоваться всеми производными классами?

Я предпочитаю не определять этот словарь как «статический».

Как я могу это сделать?

+1

Чтобы быть ясным, вы хотите, чтобы этот словарь делился между всеми экземплярами классов, которые наследуются от вашего абстрактного класса, или вы просто хотите, чтобы словарь был видимым для подклассов? – vcsjones

+0

Что не так с 'static'? – pescolino

ответ

1

Лучшим способом сделать это может быть отдельный класс Singleton, содержащий словарь, и сделать этот одноэлементный класс свойством базового класса. Это позволит вам избежать использования статического кода, одновременно обеспечивая один экземпляр класса singleton, инкапсулирующего словарь. Создание защищенного члена вашего абстрактного класса позволяет получить доступ ко всем подклассам к одному экземпляру вашего класса, содержащего словарь.

4

Определить как

защищенный словарь d ...

Он будет виден всем подклассов.

Статическое ключевое слово является неправильным выбором, поскольку он определяет словарь, общий для всех экземпляров класса. Это совсем другая вещь.

+0

, но это не будет иметь разделяемую память - один экземпляр для всего наследуемого – Yanshof

+1

Итак, вы хотите, чтобы статические (совместно используемые в VB) поведения, но не хотели объявлять их статическими? Зачем? – Corak

+0

, если вы хотите, чтобы статический определял его как static .... или как защищенный static и создавал защищенное свойство, которое ссылается на него (если это имеет смысл !!!) –

Смежные вопросы

 Смежные вопросы