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

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

...
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; 
</tperson></tperson>

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

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

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

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

...

<суб> Самое близкое, что я смог найти, - это (отличный!) пример от Marco Cantu, от Mastering Delphi 7, но сам код не использует новые языковые функции как генерические средства, новую систему RTTI или атрибуты, и она не работает с delici Unicode. TDataset изменился с D7 тоже. Суб >

5 ответов

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


Взгляните на набор данных EverClassy из Inovativa в www.inovativa.com.br/public.


DotNet4Delphi A-Dato Scheduling Technology из Нидерландов хорошо для вас.

Котировки:

От Торри Дельфи

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

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

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

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


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

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

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

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

TDataSet <= TCustomVirtualDataset <=TListDataset <= TListDataset

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

Внешний вид:


другой - это набор данных Snap Object http://digilander.libero.it/snapobject/

licensed under cc by-sa 3.0 with attribution.