2009-04-01 5 views
0

Kann ein .Net-Objekt in der Registrierung gespeichert werden?C#: Ein .Net-Objekt in der Registrierung speichern

Ich möchte eine generische List<> in der Registrierung speichern und dann abrufen und analysieren es zurück in die Liste.

Ist das möglich, oder muss ich es manuell serialisieren und es dann wieder deserialisieren?

[UPDATE]

die gebuchten Antworten Folgen, ich werde das Objekt serialisiert werden und es in dem aktuellen Benutzer AppData-Ordner speichern.

Antwort

6

Warum die Registrierung?

Der geeignete Ort zum Speichern dieser Art von serialisierten Objekten befindet sich normalerweise im Anwendungsdatenordner der Benutzer oder Isolated Storage. Natürlich liegt die Methode der Serialisierung bei Ihnen. XML, binary etc, es ist im Wesentlichen eine Datei auf der Festplatte.

Sie könnten Dinge wie "Lokale Datenbank" oder SQL Server Express berücksichtigen, abhängig von Ihren Daten und Nebenläufigkeitsanforderungen.

Einige Anwendungen speichern eine Most Recently Used (MRU) Liste in der Registrierung, aber das ist nur durch die Iteration aller Werte eines bestimmten Schlüssels. Ich empfehle diesen Ansatz nicht.

+3

-1: Dies beantwortet die Frage nicht –

0

Sie würden es serialisiert werden. Die Registrierung speichert nur Grundwerte.

0

Sie müssten es manuell serialisieren.

2

Ja, ich denke, Sie müssten es selbst serialisieren und deserialisieren. Aber Sie könnten es entweder als Binärblock oder Text/XML speichern. Es ist möglich, dass es eine Größenbeschränkung für Registrierungsdaten gibt ...

Die große Frage ist: "Ist das eine gute Sache zu tun?"

1

Ich sage das zuerst: das klingt nach einer wirklich schlechten Idee.

Wenn Sie darauf bestehen, müssen Sie es zuerst serialisieren. Die Registrierung unterstützt das Einfügen von .NET-Objekten nicht.

7

Es ist möglich, Wenn der in der Liste enthaltene Typ serialisierbar ist. Wenn das der Fall ist, können Sie es einfach serialisieren und in einem Zeichenfolgenwert speichern.

Aber es ist wahrscheinlich eine sehr schlechte Idee. Die Registrierung wird groß genug wie es ist. Legen Sie diese Art von Sache stattdessen auf das Dateisystem in dem Ordner All Users Application Data.

+0

Upvoted für hinzufügen, WARUM der vorgeschlagene Ansatz eine schlechte Idee war. (Anscheinend dürfen wir beim Schreiben eines Kommentars den Ausdruck plus eine Eins nicht mehr auf Null anwenden. Dieser Ort wird viel zu anal. Ich frage mich, ob ich DIESEN Inhalt einbeziehen darf?) –

0

Nicht ganz sicher, warum Sie .NET-Objekte in der Registrierung speichern sollten, da im BCL bereits Funktionen vorhanden sind, die dies mit XML-Konfigurationsdateien ermöglichen ...Aber natürlich können .NET-Objekte in der Registry gespeichert werden. Sie würden es wahrscheinlich nur tun wollen, wenn die Größe des Objekts relativ klein ist, aber es sollte sowieso kein Problem sein. Ich nehme an, dass der offensichtliche Weg es wäre, XML Serialization (ohne Formatierung/Leerzeichen) zu verwenden und das Objekt als serialisierten String-Wert zu speichern.

Verwandte Themen