Хорошие новости; то, что вы описали (имея существующие классы C #), является ожидаемым вариантом использования protobuf-net. Все .proto вещи ("protogen", надстройка VS и т. Д.) Были добавлены как afterfterts . Ядро protobuf-net не знает о них и не заботится о них.
Протокол буфера определяет DSL (.proto, как вы упомянули), который совместно используется реализациями и (иногда) используется для генерации кода. Когда я впервые написал protobuf-net, аспект генерации кода не был для меня самой большой проблемой - просто, что разработчики .NET, как правило, виноваты (включая меня) в том, что «сначала реализация», а не «сначала контракт».
Как следствие, protobuf-net не нуждается в .proto файлах для работы; Атрибутивный класс достаточен для однозначной сериализации / десериализации. Просто используйте Serializer.Serialize
, .Merge
и .Deserialize
(и т. Д.).
Это сказал; включает , включает очень слаборазвитую и экспериментальную поддержку для этого:
string proto = Serializer.GetProto<YourType>();
Это далеко не завершено, но может работать для простых типов. Если у вас есть конкретные случаи, когда это не удается, сообщите мне (добавьте комментарий или зарегистрируйте проблему). Тем не мение; В большинстве случаев люди, интересующиеся .proto, сначала пишут .proto и работают оттуда.
Примеры рабочих декорированных типов показаны на домашней странице проекта ; полностью зависит от вас, используете ли вы атрибуты WCF, атрибуты xml или protobuf-net (хотя последние обеспечивают больший контроль над некоторыми конкретными точками сериализации, такими как наследование и числовые макеты).