Domanda

Qual è il modo migliore per conservare le istanze di una classe di file / database?

Abbiamo una classe di base denominata Comando e un sacco di classi derivate. Gli utenti creano le istanze di queste classi con l'aggiunta di comandi per un designer grafico dove possono configurare. (Impostare le proprietà).

Abbiamo quindi bisogno di un modo per memorizzare questi "comandi" in un file senza perdere qualsiasi informazione.

Un'idea era quella di utilizzare db4o, ma la licenza GPL non è accettabile per questo progetto.

Tutti i suggerimenti o esempi di codice?

Aggiornamento:

(Al fine di "de-blurryfie" la mia domanda: p)

Il codice generato potrebbe essere simile a:

    command[i++] = new DelayInSecondsCommand(2);
    command[i++] = new DaliRequestCommand(1, false, 254);
    command[i++] = new DaliRequestCommand(2, false, 254);
    command[i++] = new DaliRequestCommand(3, false, 254);
    command[i++] = new WaitInSecondsCommand(2);             
    command[i++] = new DaliRequestCommand(1, false, 0);
    command[i++] = new DaliRequestCommand(2, false, 0);
    command[i++] = new DaliRequestCommand(3, false, 0);
    command[i++] = new JumpCommand(0);

Ma poi con un sacco di diversi comandi.

Lo so che è possibile con la serializzazione di .NET, benche non ho mai usato prima, ma mi chiedevo se ci sono alternative migliori, come ho detto db4o sembra bello, ma la licenza non si adatta al progetto.

Aggiornamento 2:

Grazie per le risposte. Io probabilmente andare con la soluzione di serializzazione ora, ma cercherò nelle altre opzioni pure. PER TUA INFORMAZIONE. i dati sono memorizzati in un database SQL Compact.

È stato utile?

Soluzione

serializzazione fa il trucco! Serializzazione è altro che la conversione di un oggetto o di un grafo connesso di oggetti in un flusso di byte (per mantenere lo stato corrente dell'oggetto). Questo può essere un flusso binario, XML o qualsiasi altra cosa. Non dovete fare questa conversione da soli dal Net ha un grande supporto per la serializzazione. Una volta che si serializzato un oggetto, si è liberi di memorizzare questi dati in un file o database. Allo stesso modo, un flusso di byte che rappresentano un oggetto serializzato può essere deserializzato in un oggetto che avrà lo stesso stato come quello originale.

A proposito: Una volta che avete un flusso serializzato di byte, è possibile applicare alcune più funzioni su di esso, ad esempio, la compressione o la crittografia.

Altri suggerimenti

Stai cercando di salvare i dati in tabelle? o come dati blob / CLOB? Dal momento che si parla di file, presumo quest'ultimo: uno qualsiasi dei serializzatori standard di .NET dovrebbe andare bene - hanno tutto il supporto di successione ecc che avevo in considerazione per DataContractSerializer, in quanto questo combina il supporto a livello di campo (come BinaryFormatter) , e l'assemblea-indipendenza del XmlSerializer.

Si potrebbe anche prendere in considerazione le cose più esoteriche come protobuf-net .

Quindi: che cosa è che devi fare che non funziona sotto gli standard di serializzatori

DB40 fornisce anche una licenza di commercio, ma è stato recentemente acquistato da versante così forse si potrebbe voler guardare quella. Questa sorta di database è conosciuto come oggetto di database orientato ed è un modo di creare istanze di classi persistenti, che è molto diverso da database relazionali che funzionano utilizzando le tabelle.

Questo (wikpedia.org) è una buona lettura sul database degli oggetti orienated e questo (anche wikipedia) è un elenco di alcune delle opzioni disponibili.

Nel mio database degli oggetti d'opinione sono molto meglio e più potente di quanto relazionale e ho solo utilizzare i database relazionali come MySQL se devo proprio (non molto spesso).

Vorrei recommomend si guarda questi video e scarica il processo.

http://www.neodatis.org . La sua LGPL, ma il tempo che ho usato c'era solo un'implementazione per Java. Ora, c'è una versione "beta" per C #, ma non ho testati.

domanda abbastanza sfocata, perché non basta usare del NET built-in possibilità di serializzazione (ad esempio XmlSerializer).

La serializzazione è un ottimo modo per archiviare questo tipo di dati. Vedere http: //blog.paranoidferret. com / index.php / 2008/06/20 / csharp dimostrativi-xml-serializzazione /

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