Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Расширение класса Collection / 13 сообщений из 13, страница 1 из 1
07.02.2007, 11:04
    #34311639
Frankie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Возможно ли добавить новые методы, поля, функции к Collection? Так, чтобы не пришлось править все места, где Collection используется (даже если надо будет только заменить на MyCollection). Какая есть информация на этот счёт?
...
Рейтинг: 0 / 0
07.02.2007, 12:21
    #34312085
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Обычно создают свой класс-коллекцию. Самое простое - тупо сагрегировать Collection. Так мастер-построитель классов и делает. Советую посмотреть на пример который он создаст.
Можно собственный класс-коллекцию сделать на основе массивов. Так то же делают, и получают выигрыш в быстродействии на больших объемах.
Разработанные собственные коллекции можно положить в шаблоны проектов.
...
Рейтинг: 0 / 0
07.02.2007, 12:24
    #34312110
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
WorobjoffМожно собственный класс-коллекцию сделать на основе массивов.А с For Each такая коллекция работает?
...
Рейтинг: 0 / 0
07.02.2007, 12:41
    #34312203
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
AntonariyА с For Each такая коллекция работает?
Если сделать свой метод - enumerator. А что там у класса внутри, это его дело.
...
Рейтинг: 0 / 0
07.02.2007, 12:52
    #34312253
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Открываем атрибуты процедур, я для этой:
Код: 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
07.02.2007, 13:18
    #34312371
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Ышо для информации: Create Your Own "Super Collections" in VB .
...
Рейтинг: 0 / 0
07.02.2007, 13:22
    #34312390
Frankie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Понял, то есть я фактически удаляю дефолтный collection и заменяю его своим. Примерно так я и думал. Спасибо!
...
Рейтинг: 0 / 0
07.02.2007, 14:17
    #34312653
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Worobjoff
В этом примере передается энумератор обычной коллекции, а я спрашивал про основу - массив .
...
Рейтинг: 0 / 0
13.02.2007, 09:55
    #34325972
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
А вот меня всегда интересовало почему -4? MS так любит использовать именнованные константы. А здесь во всех примерах -4. И напрямую выбрать из списка нельзя. Только ручками. Такое чувство, что работаешь с недокументированной функцией.
...
Рейтинг: 0 / 0
13.02.2007, 10:50
    #34326216
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
FAndrew,
эта константа называется DISPID_NEWENUM в .h/.odl/.idl - файлах.
...
Рейтинг: 0 / 0
13.02.2007, 18:16
    #34328154
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Ага.
Только мне казалось, что мы тут про VB говорим.
Тупо забил название константы в хелпе от 6 студии. Нашел одно вхождение. В описании MS SDK for Java.
В VS 2005 не нашел упоминаний. (правда может у меня не весь хелп стоит)
...
Рейтинг: 0 / 0
13.02.2007, 21:34
    #34328575
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
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
14.02.2007, 10:10
    #34329198
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расширение класса Collection
Я же написал:
Тупо забил название константы в хелпе от 6 студии
И он мне выдал только одну ссылку.
Просто мне казалось, что работа с собственными коллекцими достаточно развито в VB6. Но почему-то во всех описаниях, что поподались мне фигурировала цифра -4. Да и примере Worobjoff указывает именно её. Я конечно давно не читал информации по этому поводу, но в свое время осталось чувство чего незаконченого.
И потом мы обсуждаем именно работу VB.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Расширение класса Collection / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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