public void marshal(Stream s)
{
BinaryWriter writer = new BinaryWriter(s);
Type t = this.GetType();
FieldInfo[] fields = t.GetFields();
foreach (var fi in fields)
{
if (fi.FieldType == typeof(string)) writer.Write((string)fi.GetValue(this));
else if (fi.FieldType == typeof(int)) writer.Write((int)fi.GetValue(this));
else if (fi.FieldType == typeof(float)) writer.Write((float)fi.GetValue(this));
else if (fi.FieldType == typeof(double)) writer.Write((double)fi.GetValue(this));
}
}