Generics と RTTI で動作する TDataset の子孫を知っている人はいますか?このようなコードを記述して、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;
これは可能なはずです。フィールド定義は、データの正確なタイプがわかっているため、RTTI を介して作成できます。値は、前後に自動的にマーシャリングすることもできるため、クラスまたはレコード内のデータを表示および編集できます。
無駄なマーシャリング コードを大量に書かなければならないのは嫌ですが、そのために必要な情報は RTTI で既に入手できます。
あるいは、誰かが何らかの種類の TEnumerable <-> TDataset アダプターを作成したことがありますか?
そのようなものは存在しますか、それとも書き始める必要がありますか?
...
私が見つけた最も近いものは、Mastering Delphi 7 の Marco Cantu による (素晴らしい!)例ですが、コード自体は、ジェネリック、新しい RTTI システム、または属性などの新しい言語機能を使用していません。 Unicode delphi では動作しません。TDataset も D7 から変更されました。