Domanda

(Per Wysiwyg lo intendo io decidere CHE COSA è scritto e COME È scritto, e non qualcuno a Microsoft o su Google) (ok ... tecnicamente non decido nulla ... qualcuno che ha programmato alcuni anni fa ha deciso e posso solo chiedere quanto devo saltare)

Oggi mi sento un po 'stupido, ma ho già perso due ore alla ricerca della soluzione :-(.

Adesso...

Ho un protocollo binario. È basato su C, quindi è come guardare una struttura a C in cui è definita la fine della macchina (e per fortuna è la stessa dell'entennità "locale"), le dimensioni dei vari tipi sono definiti, è definito l'allineamento della struttura dei dati Il layout della struttura è definito, le stringhe sono matrici fisse di caratteri in una codifica di conoscenza ... tutto è definito! E tutto è molto simile a un C# unsafe struct Quando stai usando [(LayoutKind.Explicit)] E non sei molto esigente nell'uso del fixed Modificatore per array. Ora ho bisogno di serializzarlo/deserializzarlo in C#... Mi sono guardato intorno ma non sono riuscito a trovare nulla ... cosa mi sono perso? Prima di chiedere, lo so BinaryFormatter, ma non è abbastanza Wysiwyg per me ... BinaryFormatter implementa il suo linguaggio di formattazione. Sì, lo so BitConverter (E del fatto che non implementa i convertitori per Big-Endian), ma non è una soluzione "completa". È solo lo strumento "base". E so BinaryWriter/BinaryReader, ma non sembrano supportare array che non lo sono byte[] o char[] E non sembrano essere in grado di "recitare" un array alla scrittura (hai 5 elementi byte[] Array e devi scriverlo come 10 elementi byte[] array perché il formato che stai usando lo richiede ... devi scrivere righe di codice per farlo)

Il piano B (ma forse anche il piano z) è creare un'ombra unsafe struct per ogni classe, a IWysiwygSerializable interfaccia con due metodi (Read e Write) e implementa l'interfaccia in ogni classe (la scrittura popolerebbe il unsafe struct e scriverlo nel flusso di output, la lettura farebbe il contrario) (o potrei anche fare direttamente decine di decine di BitConverter nel Read e Write senza usare il struct, ma per gli array è un po 'più difficile)

Grazie!

Nessuna soluzione corretta

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