![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Здрасти!
Столкнулся с такой проблемой - Есть некая коллекция "_all" Когда пытаешься присвоить значение елементу этой коллекции _all.Item(n) = x возникает ашипка ибо оно(item) как выясняется - таки ReadOnly если пытаешься по хитрому _all.Item(n).Property = x.Property - то тоже ашипка из-за позднего связывания... Выкрутился так:
Но своими вторыми 90 чуствую что это не самое элегантное решение... А как лучше? |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
А что это за коллекция? Ведь если элемент ReadOnly, наверное это не просто так
|
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Не там коллекция из моих обьектов и сами по себе они не могуть быть ReadOnly
Там коллекция параметров для запроса MySQL - Идея в том что сначала создается набор пустых параметров под конкретную таблицу. А потом этот "шаблон" просто заполняется из формы и сбрасывается в таблицу... (ну надоело мне постоянно вспоминать как пишуться запросы, прописывать параметры в ручную и прочая рутина при работе с MySQL и я написал удобный(для меня) класс для работы с ним... =) только вот с частью которая с параметрами работает глюк вышел - я её вслепую сразу в DLLке прописывал... |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Погоди-ка. Что тебе мешает изменить код того класса? Покажи исходник
|
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
нуу вот както так:
|
|||
|
||||
| Exception |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Страшный у тебя код. Куда делся ООП? Щас буду править...
Добавлено @ 14:19
Что делает этот код??? Почему бы не объявить Property вместо этих ужасных функций? Добавлено @ 14:21 Поставь Option Strict и исправь все ошибки Лады, дай уж я поправлю... Добавлено @ 14:22 Присутствует GetEnumerator, но нету Implements IEnumerable... Добавлено @ 14:26
Не мог бы ты привести пример использования этого? |
||||
|
|||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Короче говоря, код ужасный. Лучше скажи, чего именно ты от него хотел (какие функции нужны), и я тебе его напишу сам
Тебе же проще |
|||
|
||||
| JaguarSmith |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Я жы не волшебник я только учусь...
Ну тут гланое что ужасный код работает(функции позволяют изменять присваивать получать значения обьекта...) - я просто не научился пока думать правильно и делаю всё по старинке как в qbasic Я исправюсь честна!
Я просто тупо передрал все свойства и методы которые нашёл у объекта Collection - для моего кода это вааще не сусчественно я так на всякий случай, я даже не знаю на кой он нужен этот GetEnumerator...
Идея в том что класс должон наследовать классу Collection но Collection - ненаследуемый класс - поэтому я просто эмулирую все методы и свойства Collection Для этого и пришлось создавать коллекцию _all и работать с ней.... Item - просто возвращает элемент коллекции _all соответствующий индексу(Тк в свойсве Item было написано что оно ReadOnly я использовал функцию). Хотя по идее надо исправить add чтобы это работало корректно. |
||||||
|
|||||||
| Exception |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Вот это и корень ффсех бед. Код должен понятно работать, а не просто работать. Иначе его саппорт в дальнейшем становится практически невозможным. Очень советую прочитать "Переход на VB .NET: стратегии, концепции, код" Дэна Эпплмана. Мне в свое время выправил мозги и научил ООП.
Это тоже не нужно делать Он нужен для перебора коллекции вот так:
Для этих целей есть System.Collections.CollectionBase Добавлено @ 14:55 Повторюсь: сформулируй все задачи данного класса и запости |
||||
|
|||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Суть простая есть структура - dbParameter - она представляет собой параметр MySQL и на основе коллекции таких параметров(Parameters) строятся запросы к базе данных.
Тк Parameters - коллекция - то она должна уметь делать всё тоже самое что и обычная коллекция плюс есть несколько дополнительных возможностей SetItem(имя, значение) присваивает "значение" элементу и именем "имя" - вообще говоря этоне совсем корректно так как в коллекции может быть несколько элементов с одинаковыми именами но в моём случае важно и допустимо ибо в таблице нет нескольких колонок с одинаковыми именами. GetItem(имя) - возвращает значение елемента с указанным именем. Merge(Коллекция dbParameter) - присоединяет коллекцию к теущей и FromCollection(Коллекция dbParameter) - создает коллекцию из указанной в параметрах. Вот собственно и всё... Это сообщение отредактировал(а) JaguarSmith - 2.2.2006, 15:05 |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
На каком VB пишешь? 2003 или 2005?
|
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
На 2003... Мне его пока хватает и многие его глюки я уже знаю. Хотя мой хостинг(я в основном для веб программирую) и поддерживает сайты на Framework 2.0 я пока не спешу переходить...
А это правда не займёт много твоего времени? - ато я хотел задать простой вопросик а получилось как всегда... 8 ) |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
||||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Чего не хватает и что нужно добавить в этот код:
? Это сообщение отредактировал(а) Exception - 2.2.2006, 21:41 |
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Вот!
Вспомнил на кой я в dbParameter SetValuse и RetValues сделал функциями:
Чичаза буду тестить и заодно разбираться что такое DictionaryBase и ICollection... я всему учусь сам методом научного тыка и с этим ещё не стыкивался... Баальшое спасибо! Зы. Почимуто когда я нажимаю на кнопку которая Разворачивает прокручиваемый код у мну наглухо виснет ИЕ наверно вирус подцепил гдето... |
|||
|
||||
| Exception |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
М-да. Для этого существуют конструкторы... Я подправил код в предыдущем посте, а используется это так:
Добавлено @ 21:50
Это баг форума. Скоро должны пофиксить. |
||||
|
|||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
ага!
А вот это:
А что это такое и на кой он мне нужен? Добавлено @ 23:16 А вот ещё - для мну важны функции SetItem и GetItem - которые соответственно устанавливают и возвращают элемент из коллекции в зависимости от его имени... |
|||
|
||||
| JaguarSmith |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Вотъ!
Попробовал вот так:
Но оно вызываеть - Исключение типа System.StackOverflowException. вот тут:
Но всёравно не работает - не выходит коллекция с дополнительными вожможностями.... Это сообщение отредактировал(а) JaguarSmith - 3.2.2006, 00:04 |
||||
|
|||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
В моем коде вместо GetItem и SetItem есть свойство Item, к-ое выполняет те же функции. Причем, для индексации наследовать нужно у DictionaryBase. Чем именно тебя не устраивает мой код?
|
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Ну в Dictionary это набор пар элементов Key-Value а мне нужна просто коллекция элементов - мну смущает этот самый Кеy...
А с коллекцией у мну не выходит - чегойто я делаю неправильно - хотя я вроде с MSDN слизал идею но обьекты в коллекцию не добавляются Вот тут
Me.Remove(i) Вызывает ашипку на том основании что типа нет такого элемента в коллекции... Это сообщение отредактировал(а) Exception - 3.2.2006, 01:52 |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Если ты хочешь, чтобы кто-нибудь понял твой код, называй переменные нормально! Я так и не понял, чем тебя не устраивает Dictionary: тебе ведь и нужна индексация по Name, вот тебе и key. И никаких путанных setItem, getItem, просто свойство Item.
|
|||
|
||||
| JaguarSmith |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 16.1.2005 Репутация: нет Всего: 1 |
Просто с практической точки зрения - этот класс - часть другого большого класса и тот настроен на работу как и программа которая его использует с коллекциями а кроме того я хотел чтобы работа с этим классом была бы максимально простой и с этой точки зрения Key - просто лишний элемент и лишняя головная боль - мой кривой вариант он хоть был и кривой, но абсолютно рабочий(ну за исключением GetEnumerator) поэтому если я и буду рыть то именно в сторону CollectionBase а не DictionaryBase. Отдельное спасибо за - "Переход на VB .NET: стратегии, концепции, код" |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Ок
|
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |