I know D doesn't really have RTTI yet, but I'm experimenting with "faking" it by doing something like:
class A { string prop1; int prop2; ... void serialize() { __serialize(this); } } void __serialize(T)(T obj) { writeln(typeid(obj)); foreach (name; __traits(derivedMembers, T)) { writefln("%s = %s", name, __traits(getMember,obj,name)); } } The only thing is, serialize() has to be declared in every derived class, because T needs to be known at compile-time. Is there a way to "automate" this? I.e., automatically insert the serialize() boilerplate code into derived classes? (P.S. D just took on brand new levels of cool when I realized I could do something like this. Imagine doing this with C++ templates... ugh! What a painful thought!) T -- Tech-savvy: euphemism for nerdy.