2013-09-25 3 views
0

Earlier questionProtobuf внутрисетевой Версия Толерантность

Я надеялся использовать protobuf-net в распространяемом пакете библиотеки, который будет включен в нескольких приложениях. Каждое приложение должно будет иметь возможность открывать файлы, которые были сериализованы библиотекой, манипулировать объектами, а затем сохранять/сериализовать обратно в файл. Конечно, проблема с версией становится большой проблемой. Я не хочу потерять данные, если более старая версия обходит файлы, созданные из более новой версии. Затем я нашел базовый класс ProtoBuf.Extensible, но быстро обнаружил, что ProtoBuf.IExtensible не поддерживает классы с наследованием. У меня обязательно должно быть наследство.

Есть ли у меня опции? Я начинаю чувствовать сериализацию с терпимостью к версии, и что-то большее, чем простейший из классов, - это мечта.

ответ

0

Как и в большинстве случаев: функции требуют усилий для проектирования, внедрения, тестирования и поддержки. Сочетание наследования и расширяемости не является чем-то, что у меня есть потребность/требование полностью исследовать на сегодняшний день. Я уверен, что он разрешим, но: он не является полностью тривиальным. Имейте в виду, что raw protobuf (спецификация Google) не включает в себя наследование вообще: p

В настоящее время состояние просто «это не поддерживаемый прецедент». Нет волшебства [MakeItWork] вы можете добавить. Это потребует некоторой мысли и т. Д.

+0

это позор, я люблю '[MakeItWork]' магия однострочных;) Я планирую посмотреть источник завтра. – Ethan

+0

@ Это предостережение: безумное количество метапрограмм. IIRC, TypeSerializer является ключевым типом здесь. Проблема здесь, однако, в основном является конструктивной: как правильно правильно округлить данные. Возможно, проблема заключается в том, что на самом деле это методы «добавить расширенные данные» - возможно, им нужен спецификатор типа (возможно, только в случае наследования), чтобы указать, на каком уровне эти гипотетические гипотезы существуют. –

Смежные вопросы