public static void Write(StreamWriter writer, object o, ZXPProxy zpp, int spaces = 0)
{
foreach(var f in zpp.Data) {
object value = f.GetValue(o);
if(f.Converter == null) {
if(value == null) writer.WriteLine("{2}{0} <{1}> {{ NULL }}", f.Key, f.Type.FullName, new string(' ', spaces));
else {
Type vType = value.GetType();
writer.WriteLine("{2}{0} <{1}> {{", f.Key, vType.FullName, new string(' ', spaces));
Write(writer, value, ZXPProxy.GetProxy(vType), spaces + 4);
writer.WriteLine("{0}", new string(' ', spaces) + "}");
}
}
else writer.WriteLine("{2}{0} [{1}]", f.Key, f.Converter.Convert(value), new string(' ', spaces));
}
}