I don't understand how Object.factory could help with
serializing. But what would help is if we did get proper
runtime reflection.
All that'd be needed would be to have Object.factory working with
templates, here's how:
----
unittest{
class A{}
class B{int x;}
A a=new B;
auto c=serialize(a);//will serialize field "x", no need to
register!B
}
auto serialize(T)(T a){
auto
c=cast(SerializerBase)Object.factory("Serializer!("~typeid(a).to!string~").Serializer");
return c.serialize(a);
}
class SerializerBase{//could also be an interface
auto serialize(Object a){}
}
class Serializer(T):SerializerBase{
auto serialize(Object a){
auto b=cast(T)a;
foreach (name; __traits(allMembers, T)) {
//now we have access to fields of most derived type;
//we can get the fields from base class as well.
}
}
}
----
I've left out details to focus on the key part. Deserialization
is very similar.
So the question is: is that technically impossible or not to
enhance Object.factory in such ways?