Пользовательские методы сериализации / десериализации в protobuf-net - PullRequest
1 голос
/ 24 декабря 2010

Можно ли предоставить свои собственные методы для сериализации и десериализации типа для protobuf-net для использования в его методах Serializer.Serialize () и Serializer.Deserialize ()?

т.е. напишите мой собственный кодиспользуя ProtoWriter и ProtoReader вместо разметки класса с атрибутами сериализации.

1 Ответ

2 голосов
/ 24 декабря 2010

Упоминание ProtoReader / ProtoWriter означает, что это вопрос "v2", и в этом случае вам не нужно использовать атрибуты вообще - вы можно определить модель во время выполнения через TypeModel. По вопросу о пользовательских сериализаторах - на данный момент, не совсем - но я ожидаю, что скоро добавлю интерфейс для этого. Единственная проблема заключается в том, что вызывающий абонент отвечает за это. Вы могли бы также захотеть взглянуть на экспериментальный сериализатор DataTable, который делает нечто подобное.

Однако есть и некоторые технические соображения; в частности наследование; очевидная закономерность для вашего класса - реализовать интерфейс, но это означает, что после создания объекта уже слишком поздно создавать подкласс. Если тип, который реализует интерфейс , не является самой сущностью, но отдельный тип, который просто обрабатывает сериализацию / десериализацию ...

...