Per serializzare una classe con protobuf-net, si neet per fornire la classe e gli attributi di proprietà [ProtoContract] e [ProtoMember (n)] - dove n è 1,2,3, .., eccIn Protobuf-net, è possibile serializzare le classi non decorate?
Appart dalla clonazione a un'immagine speculare di una classe, è possibile serializzare/deserializzare una classe di cui non abbiamo il controllo?
Ad esempio:
utilizzando ProtoBuf;
- Serializer.Serialize <eccezione> (OutputStream, eccezione);
o
- Serializer.Serialize < Tuple < dati, Eccezione > > (OutputStream, dataWithPossibleException);
NB. dicono che Data ha [ProtoContract]/[ProtoMember] e gli altri no.
possibili approcci:
- Sarebbe bello se avessimo "attributi di estensione", che hanno lavorato come metodi di estensione. [non possibile]
- replicare la classe localmente e quindi copiare in/dall'oggetto prima serializzazione/deserializzazione [che funzionerebbe, ma la produttività diminuisce]
- generare un file di proto esterno/definizione per la classe e archiviarlo in risorse? [Qualcuno sa come fare per questo?]
Grazie per anticipare questa esigenza! Per il momento ho scelto l'opzione surrogata, in cui ho decompilato le classi minuscole e le ho inserite nella mia assemblea. Principalmente cerco di aderire a POCO, quindi una tantum come questa non è un grosso problema. Controllerò le nuove opzioni della versione 2. – sgtz
@sgtz il metodo SetSurrogate dovrebbe renderlo più diretto e conveniente –
btw: Avevo una versione leggermente più vecchia di v2. Quindi, premo l'aggiornamento su svn e ora posso serializzare/deserializzare>. Inoltre, ho dovuto rimuovere + readd il binario protobuf-net. Non so di cosa si trattasse, ma ora funziona bene.Grazie per aver reso pubblico questo progetto ... e anche, grazie a Google. Dovrei menzionare che a questo punto, sto * ancora * usando la mia copia di Tuple, non quella nel namespace System. –
sgtz