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(); }