Как получить набор данных объектов в памяти?

кто-нибудь знает потомка TDataset, который работает с дженериками и RTTI, так что я могу написать такой код и использовать компоненты с данными в GUI? :

...
ds:TDataset<TPerson>;
...

procedure DoStuff;
begin    
  ds:=TDataset<TPerson>.create;
  ds.add(TPerson.Create('A.','Hitler',77));
  ds.add(TPerson.Create('O.','Bin Laden',88));
 end; 

этой должны можно. Fielddefs может быть создан через RTTI, потому что точный тип данных известен. Значения также можно автоматически маршалировать вперед и назад, чтобы можно было просматривать и редактировать данные класса или записи.

Я ненавижу писать много бесполезного кода маршаллинга, в то время как необходимая информация для этого уже доступна через RTTI.

или, может быть, кто-то когда-то написал какой-то TEnumerable TDataset адаптер?

существует ли что-то подобное, или я должен начать писать?

...

Самое близкое, что я мог найти, это (отлично!) пример Марко Канту, от освоения Delphi 7, но сам код не использует новый языковые функции, такие как дженерики, новая система RTTI или атрибуты, и она не работает с Unicode delphi. TDataset также изменился с D7.

5 ответов


в TAureliusDataSet включенными в TMS Aurelius очень близко к этому.


посмотри EverClassy Dataset С Inovativa at www.inovativa.com.br/public.


еще один-Snap Object Dataset http://digilander.libero.it/snapobject/


DotNet4Delphi by A-Dato Технология Планирования из Нидерландов хорошо для вас.

enter image description here

цитаты:

из Дельфи Торри

подключить любую коллекцию на управление данными.

DotNet4Delphi реализует множество классов коллекций .Net, включая универсального типа как список и словарь. Отличается от их Аналог Delphi заключается в том, что наши общие коллекции также реализуют неродовые интерфейсы (IList, IDictionary), позволяющие получить доступ свои коллекции несколькими способами. Это открывает дверь для использования любого коллекция в качестве источника данных для данных управления, которая в точности что обеспечивает (также включенный) компонент TListDataset.

Он нацелен на Delphi XE и XE2.

Это инициатива с открытым исходным кодом, Delphi rocks !!!


Я нашел более релевантный ресурс и не могу не поделиться им! Настолько актуально, что я думаю, что он заслуживает отдельного сообщения, а не просто обновления в моем первом ответе.


на Dduce библиотека для Delphi XE2-XE6 использует TListDataSet<...> компонент универсального набора данных, который можно использовать для предоставления общий список как TDataSet.

наиболее релевантные единицы, относящиеся к реализации универсального набора данных являются:

иерархия классов:

TDataSet TListDataset

Да, он наследует множество функций... мое единственное желание в моем распоряжении должна быть версия, работающая с уменьшенным требованием (Delphi XE без большинства других наворотов).

внешний вид:

enter image description here