[Lazarus] Generics type as parameter
Leonardo M. Ramé
l.rame at griensu.com
Sun May 13 02:49:21 CEST 2012
On 2012-05-12 13:07:18 -0300, Leonardo M. Ramé wrote:
> Thanks Sven and Michalis. Using the suggestion by Michalis, I got a
> solution mixing Generics and regular objects.
>
> What I'm pursuing is to replace my TCollection based ORM, with a
> Generics based one, this allow users to write less code, in a clearer
> way.
>
> The way the ORM works, is to create a TCollection instance, then execute
> an ORM's method to load/save data into/from it, example:
>
> var
> lCustomers: TCustomers; // this is a TCollection descendant
> begin
> lCustomers := TCustomers.Create;
> FConnector.LoadData(lCustomers, []);
> ... do something with lCustomers ...
> lCustomers.Free;
> end;
>
> As you can see, FConnector.LoadData receives a TCollection as parameter,
> and using RTTI, it fills each TCustomer published property.
>
> With Michalis's solution, I can turn my ORM from TCollections to
> Generics with very little changes, see how small is the unit customer
> now, instead of a complete TCollection/TCollectionItem definition:
>
Following the same subject, inside a method receiving an TFPSList, how
can I know the type of items it will contain, even if the list is
empty?.
In a TCollection, I can use myCollection.ItemClass to know it, but in a
specialized Generic type, how can I know, in an abstract way the type of
a TFPGList<T>?. I mean, what type is T?.
Regards,
--
Leonardo M. Ramé
http://leonardorame.blogspot.com
More information about the Lazarus
mailing list