Come faccio a generare un file Proto da una classe C # decorato con gli attributi?
-
20-09-2019 - |
Domanda
Cercando di ottenere la mia mente intorno google protobuf. Ho trovato un po 'di attuazione protobuf in C #, ma sembra mancare di una caratteristica:. La capacità di generare Proto file automaticamente da una classe C # esistenti decorato con attributi
Il motivo che voglio fare in questo modo, invece di andare dalle classi auto-generate C # da Proto lima è perché ho già le classi C # definite nel mio progetto e non voglio duplicare loro solo per soddisfare protobuf .
Qualcuno ha incontrato un tale scenario?
Aggiorna
Questo è possibile per decorare solo una classe C # e non utilizzare un file Proto da usare protobuf?
Soluzione
Una buona notizia; quello che hai descritto (avendo classi esistenti C #) è il caso d'uso previsto di protobuf-net. Tutta la roba Proto ( "ProtoGen", il VS add-in, ecc) sono stati tutti aggiunti come ripensamenti . Il nucleo di protobuf-net non sa su di loro o cura di loro.
buffer protocollo definisce una connessione DSL (Proto, come si parla) che è condivisa tra le implementazioni, ed è (a volte) utilizzato per la generazione del codice. Quando ho scritto protobuf-net, l'aspetto di generazione di codice non è stata la mia più grande preoccupazione -. Semplicemente che gli sviluppatori di .NET sono generalmente colpevole (me compreso) di "implementazione prima" piuttosto che "primo contratto"
Di conseguenza, protobuf-net non ha bisogno di Proto file per lavorare; una classe attribuita è sufficiente per serializzare inequivocabilmente / deserializzare. Basta usare Serializer.Serialize
, .Merge
e .Deserialize
(ecc).
Detto questo; non includere alcuni molto sotto-sviluppato e sperimentale il supporto per questo:
string proto = Serializer.GetProto<YourType>();
Questo è ben lungi dall'essere completo, ma può funzionare per i tipi semplici. Se si dispone di alcuni casi specifici in cui viene a mancare, allora fatemi sapere (aggiungere un commento o registrare un problema). Però; la maggior parte del tempo, le persone interessate a Proto avrebbe scritto il Proto prima e lavorare da lì.
Esempi di lavoro tipi decorati vengono visualizzati sul home page del progetto ; è interamente a voi se utilizzare attributi WCF, attributi XML o attributi protobuf-net (anche se quest'ultimo forniscono maggiore controllo su alcuni punti serializzazione specifici, come l'ereditarietà e layout numerici).
Altri suggerimenti
Prima Skeet Marc corre qui e ottiene massiccia up, Vi segnalo protobuf.net.