Совместное использование данных членов класса между подкомпонентами - PullRequest
1 голос
/ 05 июня 2010

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


Конкретный пример, который у меня есть, следующий. Основным классом является .net Form. У меня есть некоторые элементы управления (на самом деле элементы управления в элементах управления) в главной форме, которым нужен доступ к общим данным.

Main Form
- DataX
- DataY
- Control1
-- Subcontrol1
- Control2
-- SubControl2

SubControls 1 и 2 хотят получить доступ к DataX и DataY.

Беда в том, что, как мне кажется, лучшая практика (для уменьшения связи) заключается в том, что либо субконтроли не должны знать о главной форме, либо основная форма не должна знать о субконтролях - возможно, первой.

Для субконтролей, которые не должны знать о главной форме, вероятно, будет означать, что основная форма передает ссылки на оба элемента управления 1 и 2, что, в свою очередь, передает ссылки на субконтроль 1 и 2. Множество строк кода, которые просто пересылают ссылки , Если бы позже я добавил DataZ и DataW, а также элементы управления 3 и 4 и элементы SubControls 3 и 4, мне пришлось бы добавить гораздо больше кода для пересылки ссылок.

Мне кажется проще давать элементам SubControls 1 и 2 ссылки на основную форму. Таким образом, любой субэлемент управления может просто запросить MainForm.DataX или MainForm.DataY, и если я когда-нибудь добавлю новые данные, я могу просто получить к ним доступ напрямую из субэлементов без проблем. Но это все еще включает установку ссылок на элементы MainForm каждый раз, когда я добавляю новый элемент управления или субконтроль. И это дает мне интуитивное чувство «неправильно».

Как вы могли бы сказать, я не доволен ни одним из моих решений. Есть ли лучший способ?

Спасибо

1 Ответ

1 голос
/ 05 июня 2010

вы можете сделать данные x и data y статическими членами, чтобы вы могли получить к ним доступ это прекрасно работает, если у вас только один экземпляр главной формы, работающий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...