Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП, помогите разобраться в разработке... 
V
    Опции темы
Wanderer2019
Дата 12.9.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



Всем привет!
Задался вот написать свой класс...
Естессьно стал смотреть на реализацию уже имеющихся во Framework`e.
Столкнулся со следующим...

Есть множество классов имеющих в качестве свойств коллекции объектов.
Например:

Код

MyObject.Items

, где Items - некоторое свойство...

соответсвенно для добавления Item`ов есть метод - Add
т.е. 
Код

MyObject.Items.Add(MyObject)

Никак не могу разобраться как же реализовать такую архитектуру...
Например описал класс MyObject, где в качестве свойства описал Items
Код

private object _Items;
public object Items
        {
            get 
            {
                return _items;
            }
        }

каким образом описать метод Add???

Всем спасибо!
PM ICQ MSN   Вверх
ivashkanet
Дата 12.9.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Wanderer2019 @  12.9.2006,  13:23 Найти цитируемый пост)
MyObject.Items.Add(MyObject)

Такую??? Бред какой-то. Получается твой класс --- коллекция объектов, тип которых твой класс.
Т.е. Он и контейнер, и элемент этого контейнера.

Это конечно возможно сделать. Но вот только зачем?

Пример:
Код

class MyClass
{
private List<MyClass> _Items;
public List<MyClass> Items
        {
            get 
            {
                return _items;
            }
        }
}

PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 12.9.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



нет нет .. сорри неправильно...
что то типа 
Код

MyObject.Items.Add(NewObject)


уже вроде разобрался...
вот здесь нашел примеры:
MSDN
PM ICQ MSN   Вверх
Bogdan1024
Дата 12.9.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



Дык в фрэймворке уже и так полно таких классов. В System.Collections


--------------------
user posted image
PM MAIL   Вверх
Wanderer2019
Дата 12.9.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



в кое чем разобрался.....
по ходу кодинга возник еще вопрос....

Как реализуется такая логика:
Код

ItemObject item=MainObject.CollectionObjects.Item(0);
item.MainObject//вот именно это и интересует... 

как сделать так чтобы эелементы коллекции ссылались на своего родителя?

на данный момент есть только одна идея - тащить всюдорогу с собой экземпляр класса MainObject

Спасибо за советы!



Это сообщение отредактировал(а) Wanderer2019 - 12.9.2006, 15:53
PM ICQ MSN   Вверх
Exception
Дата 12.9.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Тебе же сказали. Есть уже всё готовое. Наследуешься, скажем, от List<MyObject> и добавляешь туда ссылку на нужный тебе главный объект.
PM   Вверх
Wanderer2019
Дата 12.9.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



я наследовался от System.Collections.CollectionBase

Цитата(Exception @  12.9.2006,  16:22 Найти цитируемый пост)
добавляешь туда ссылку на нужный тебе главный объект

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

я просто думал есть какой то более разумный способ

PM ICQ MSN   Вверх
ivashkanet
Дата 12.9.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Wanderer2019 @  12.9.2006,  17:28 Найти цитируемый пост)
имеется ввиду просто завечти поле куда присваивать нужный мне объект главного класа????

Да, да, да smile А чем тебе этот способ неразумен? 
В методе Add выставляешь эту пропетю на объект в котом этот Add вызывается.
У верхнего объекта ссылка на парент нулевая (Parent =  null smile ). 

PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 13.9.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Другого способа получить из объекта ссылку на логически вышестоящий нет, только храня ссылку на него.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.