Можно ли использовать Serializer protobuf-net и одновременно соответствующий файл * .proto? - PullRequest
4 голосов
/ 19 мая 2011

У меня есть тип .NET, который не связан ни с ProtoContract, ни с DataContract. Кроме того, не все его состояния должны быть протосериализованы. Могу ли я определить файл .proto для него, но в то же время использовать какой-нибудь сериализатор для его сериализации, как если бы он был приписан ProtoContract?

Спасибо.

1 Ответ

6 голосов
/ 19 мая 2011

В качестве третьего варианта можно использовать [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 позже сегодня, или вы можете собрать из кода.

...