Никакое обсуждение этого предмета не было бы завершено, не упоминая мини-язык геометрии (или Синтаксис Разметки Пути ) для более компактного definition:-
формы, первое описывает Перемещение к 0,6 Строкам к 12,6 Строкам к 6,0, и затем закройте форму (Z).
существует также синтаксис кривой.
Лично я предпочел бы первый вариант по простой причине. Если вы посмотрите на платформу .NET, то увидите аналог вашей сериализации в пространстве имен System.Xml.Serialization. Там они делают почти в точности то, что вы предлагаете в вашем первом подходе.
Однако, если вам это не особенно нравится, я бы предложил третий подход: написать собственный форматировщик сериализации, реализующий System.Runtime.Serialization. IFormatter. Это дает вам возможность использовать стандартные нотации и механизмы сериализации для ваших объектов (например, [Serializable] и ISerializable), но вы следуете хорошо известному шаблону, что упрощает распознавание использования. Кроме того, в качестве дополнительного бонуса вы можете легко поддерживать другие формы сериализации (двоичные, мыльные, другие настраиваемые форматы), заменив свою реализацию IFormatter
Edit: вот пример: http://geekswithblogs.net/luskan/archive/2007/07/16/113956.aspx