powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать свою универсальнуюю коллекцию?
10 сообщений из 10, страница 1 из 1
Как сделать свою универсальнуюю коллекцию?
    #32551353
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать свою универсальнуюю коллекцию (чтобы она могла содержать объекты любого типа)? Что-то на подобии ArrayList, но чтобы она реализовывала интерфейс IBindingList.
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551371
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вам не хватает?

Пишите класс, который инкапсулирует ArrayList и имплементирует IBindingList и дело в шляпе.
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551382
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том что я прообовал это сделать но у меня не получилось.
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551427
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем вам DataTable не угоден?
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551750
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем задавать глупые вопросы, мне нужна своя коллекция в которой мне нужно хранить объекты каких-то пользовательских классов, а ArrayList плохо дружит с DataGrid. Например, при добавлении нового объекта в ArrayList DataGrid не реагирует на изменения и не обновляет выводимую информацию, и кроме этого выдает какие-то непонятные ошибки связаные с неправильным индексом и т.д.
В MSDN есть пример, который показывает как создать свою коллекцию унаследовануюю от CollectionBase и IBindingList. Этот пример я пробоваол, и он у меня работает (DataGrid хорошо обновляет выводимую информацию при добавлениии/удалении объектов в эту коллекцию), но дело в том что эта колекция строго типизирована в ней можно хранить объекты определенного типа, что мне не подходит, т.к. мне один раз надо хранить объекты одного типа в другой раз объекты другого типа.

Как этого добиться?
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551834
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ignaci... но дело в том что эта колекция строго типизирована в ней можно хранить объекты определенного типа, что мне не подходит, т.к. мне один раз надо хранить объекты одного типа в другой раз объекты другого типа.

Как этого добиться?

А что за беда?
Делаешь потомка CollectionBase с перечеслимым типом Object и она сразу же становится не такой уж "строго типизированной"...

типа так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class ObjectsCollection : CollectionBase  {

   public Object this[ int index ]  {
      get  {
         return( (Object) List[index] );
      }
      set  {
         List[index] = value;
      }
   }
....
....
}
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32551903
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qu-quДелаешь потомка CollectionBase с перечеслимым типом Object

Можна маленькую консультацию по перечислимому типу Object. Дело в том что я пытаюсь писать на управляемом C++, и пока вроде такого типа не встречал, может быть что он есть только в С# (хотя не думаю, должно быть и в C++). Есть конечно
базовый сласс Object, но это далеко не переслимый тип, это вроде класс с методами.
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32552345
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ignaciбазовый сласс Object, но это далеко не переслимый тип, это вроде класс с методами.

Базовый, базовый... какой же еще... (ну, извини, неудачно фразу построил).
Имело ввиду то, что любая коллекция содержит в себе перечисление экземпляров определенного типа (базового класса, или пользовательского - не важно).
Во всех примерах "имплементации" CollectionBase как правило показывается создание внутреннего "энумератора" со "строгим типом" объектов, хранящихся в этой коллекции, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// коллекция "коротких" целых чисел
public class Int16Collection : CollectionBase  {

   public Int16 this[ int index ]  {
      get  {
         return( (Int16) List[index] );
      }
      set  {
         List[index] = value;
      }
   }
...
...

Я предложил - заменить такую "строгую" типизацию на более "мягкую", т.е. писать в CollectionBase "массив" экземпляров типа Object, при этом правила "имплементации" класса CollectionBase не нарушаются (т.к. он по-честному хранит экземпляры одного типа Object), зато появляется возможность в разное время "пихать" туда разные другие типы, которые так или иначе все равно "происходят" от того же Object...

Вот и все...
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32552397
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коллекции лучше коллекционировать какой-то базовый класс, возможно даже номинальный, тогда не будет проблем с сериализацией.
Я столкнулся с этим для интерфейсов. Думаю, что Object тоже не самый лучший выбор, из-за этого же.
...
Рейтинг: 0 / 0
Как сделать свою универсальнуюю коллекцию?
    #32553064
Dronopotamus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в мсдн есть пример типизированной коллекции, реализующей IBindingList (там же, где и описание интерфейса этого)
ms-help://MS.MSDNQTR.2003APR.1033/cpref/html/frlrfsystemcomponentmodelibindinglistclasstopic.htm
Это локальный адресс, на msdn.microsoft.com нет примера.

В примере часть методов не реализована (сортировка, фильтрация) - самому придётся... Если не получится - можно подстмотреть где-нибудь. В DevExpress eXpress Persistent Object например :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать свою универсальнуюю коллекцию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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