powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Расширение класса Collection
13 сообщений из 13, страница 1 из 1
Расширение класса Collection
    #34311639
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно ли добавить новые методы, поля, функции к Collection? Так, чтобы не пришлось править все места, где Collection используется (даже если надо будет только заменить на MyCollection). Какая есть информация на этот счёт?
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312085
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно создают свой класс-коллекцию. Самое простое - тупо сагрегировать Collection. Так мастер-построитель классов и делает. Советую посмотреть на пример который он создаст.
Можно собственный класс-коллекцию сделать на основе массивов. Так то же делают, и получают выигрыш в быстродействии на больших объемах.
Разработанные собственные коллекции можно положить в шаблоны проектов.
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312110
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffМожно собственный класс-коллекцию сделать на основе массивов.А с For Each такая коллекция работает?
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312203
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА с For Each такая коллекция работает?
Если сделать свой метод - enumerator. А что там у класса внутри, это его дело.
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312253
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открываем атрибуты процедур, я для этой:
Код: plaintext
1.
2.
Public Property Get NewEnum() As IUnknown
    Set NewEnum = mCol.[_NewEnum]
End Property
Ставим ProcedureID = -4

Можно прямо в код забить
Код: plaintext
1.
2.
3.
Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = - 4 
    Set NewEnum = mCol.[_NewEnum]
End Property
Но строчка с атрибутом исчезнет после перезагрузки проекта.
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312371
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ышо для информации: Create Your Own "Super Collections" in VB .
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312390
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял, то есть я фактически удаляю дефолтный collection и заменяю его своим. Примерно так я и думал. Спасибо!
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34312653
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff
В этом примере передается энумератор обычной коллекции, а я спрашивал про основу - массив .
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34325972
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот меня всегда интересовало почему -4? MS так любит использовать именнованные константы. А здесь во всех примерах -4. И напрямую выбрать из списка нельзя. Только ручками. Такое чувство, что работаешь с недокументированной функцией.
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34326216
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAndrew,
эта константа называется DISPID_NEWENUM в .h/.odl/.idl - файлах.
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34328154
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага.
Только мне казалось, что мы тут про VB говорим.
Тупо забил название константы в хелпе от 6 студии. Нашел одно вхождение. В описании MS SDK for Java.
В VS 2005 не нашел упоминаний. (правда может у меня не весь хелп стоит)
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34328575
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAndrew,
а мне казалось, что про технологии COM и Automation . Которые не зависят от языка реализации. Automation: Platform SDK Implementing the _NewEnum Property

The _NewEnum property identifies an object as supporting iteration through the IEnumVARIANT interface. This property has the following requirements:

Must be named _NewEnum and must not be localized.

Must return a pointer to the enumerator object's IUnknown interface.

Must include DISPID = DISPID_NEWENUM (-4).
...
Рейтинг: 0 / 0
Расширение класса Collection
    #34329198
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же написал:
Тупо забил название константы в хелпе от 6 студии
И он мне выдал только одну ссылку.
Просто мне казалось, что работа с собственными коллекцими достаточно развито в VB6. Но почему-то во всех описаниях, что поподались мне фигурировала цифра -4. Да и примере Worobjoff указывает именно её. Я конечно давно не читал информации по этому поводу, но в свое время осталось чувство чего незаконченого.
И потом мы обсуждаем именно работу VB.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Расширение класса Collection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]