Sto creando una libreria di registrazione degli errori che crea un file in una posizione specificata, quindi salva le informazioni di errore in quel file, che possono essere lette da un programma tasker separato che intendo scrivere in congiunzione con questa libreria.Serializzazione e deserializzazione di oggetti multipli
Il modo in cui sto salvando è in formato binario (utilizzando BinaryFormatter()
e FileStream()
), dove serializzo una classe chiamata ErrorEntry nel file e la aggiungo alla fine del file. Ciò significa che ho una serie di ErrorEntries back to back. Non ce l'ho come lista perché non sembra pratico dover leggere tutte le informazioni in un elenco dal file, aggiungere una voce, quindi salvarla sul file e scaricare le risorse. Sembra molto più efficace dover solo eseguire un singolo comando di scrittura e archiviare ciascuno come oggetto proprio serializzato.
Il mio problema è che posso trovare diversi esempi sulla serializzazione di elenchi o singoli oggetti, ma nulla su più - ma separati - oggetti. Sebbene io voglia salvarli come singoli oggetti, quando li carico voglio leggere l'oggetto e restituire la serie come un elenco di quell'oggetto. Immagino che ci sia qualcosa di simile a
while(!EOF)
{
//deserialize each object
//add individual object to a list
}
//return the list of objects
Come potrei fare per deserializzazione ogni oggetto da un singolo file? Ha un marcatore interno che funziona sopra e ho semplicemente bisogno di rilevare se è la fine del file, o devo fare qualcos'altro per leggerli?
Perché non basta mettere tutti gli oggetti in un '' lista
@OndrejTucny che vuole aggiungere al file senza caricare tutte le voci precedenti. – weston
Ha detto perché e sembra ragionevole. Per deserializzare a livello di oggetto è necessario scrivere la sequenza delimitatore dopo ogni voce e reagire quando si legge il file indietro. – Tommi