В качестве третьего варианта можно использовать [XmlType]
и [XmlElement(Order=n)]
... но я не думаю, что это то, что вы имеете в виду ;p
В «v2» это действительно возможно. Вам не нужно определять .proto — вы можете просто сказать ему, что делать во время выполнения, например:
var model = TypeModel.Create();
model.Add(typeof(SomeType)).Add("Foo", "Bar", "Blip");
теперь сохраните где-нибудь model
(и используйте его повторно) и используйте model.Serialize(...)
и model.Deserialize(...)
. Вышеприведенное конфигурирует SomeType
для сериализации .Foo
(как поле 1), .Bar
(как поле 2) и .Blip
(как поле 3). Конечно, есть много других способов сделать это для более тонкого контроля.
Он сгенерирует (по мере необходимости) сериализатор (через IL-эмит, очень быстро), который работает с вашими типами, как и ожидалось.
Существует загружаемая dll "v2", но она нуждается в обновлении - за последние несколько недель я сделал много исправлений. Я попытаюсь обновить эту dll позже сегодня, или вы можете собрать ее из кода.
person
Marc Gravell
schedule
19.05.2011