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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top