I resovled it by Generic programming :
private const (ubyte)[] serialObj(T) (T obj)
{
TMemoryBuffer trans = new TMemoryBuffer();
auto prot = new TCompactProtocol!TMemoryBuffer(trans);
obj.write(prot);
return trans.getContents();
}
