On 2012-05-13 10:53:42 +0200, Sven Barth wrote: > On 13.05.2012 02:49, Leonardo M. Ramé wrote: > >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?. > > You can't. That's why the method with the "parent class" might be considered > less powerful than the one with generic methods/procedures. > > Regards, > Sven >
Hm. Another thing I'm stuck on, is specialized classes doesn't seem to have a ClassName, am I righ?. -- Leonardo M. Ramé http://leonardorame.blogspot.com -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
