В качестве третьего варианта можно использовать [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 Emit, очень быстро), который работает с вашими типами, как и ожидалось.
Существует загружаемая dll "v2", но она нуждается в обновлении - за последние несколько недель я сделал много исправлений. Я постараюсь обновить эту DLL позже сегодня, или вы можете собрать из кода.