Ich habe herausgefunden, dass einige Klassen die [Serializable]
Attribut.
- Was ist das?
- Wann sollte ich es verwenden?
- Welche Art von Leistungen erhalte ich?
Ich habe herausgefunden, dass einige Klassen die [Serializable]
Attribut.
Wenn Sie ein Objekt in einer .Net-Framework-Anwendung erstellen, müssen Sie sich keine Gedanken darüber machen, wie die Daten im Speicher abgelegt werden. Denn das .Net Framework erledigt das für Sie. Wenn Sie jedoch den Inhalt eines Objekts in einer Datei speichern, ein Objekt an einen anderen Prozess senden oder es über das Netzwerk übertragen wollen, müssen Sie sich Gedanken darüber machen, wie das Objekt dargestellt wird, da Sie es in ein anderes Format konvertieren müssen. Diese Konvertierung wird SERIALISIERUNG genannt.
Die Serialisierung ermöglicht es dem Entwickler, den Zustand eines Objekts zu speichern und es bei Bedarf wiederherzustellen, was sowohl die Speicherung von Objekten als auch den Datenaustausch ermöglicht. Durch die Serialisierung kann ein Entwickler Aktionen wie das Senden des Objekts an eine Remote-Anwendung mittels eines Webdienstes, die Weitergabe eines Objekts von einer Domäne an eine andere, die Weitergabe eines Objekts durch eine Firewall als XML-String oder die Aufrechterhaltung von Sicherheits- oder benutzerspezifischen Informationen über Anwendungen hinweg durchführen.
Bewerbung SerializableAttribute
zu einem Typ, um anzuzeigen, dass Instanzen dieses Typs serialisiert werden können. Wenden Sie die SerializableAttribute
auch wenn die Klasse auch die ISerializable
Schnittstelle, um den Serialisierungsprozess zu steuern.
Alle öffentlichen und privaten Felder eines Typs, die mit dem Symbol SerializableAttribute
werden standardmäßig serialisiert, es sei denn, der Typ implementiert die ISerializable
Schnittstelle, um den Serialisierungsprozess außer Kraft zu setzen. Der Standard-Serialisierungsprozess schließt Felder aus, die mit NonSerializedAttribute
. Wenn ein Feld eines serialisierbaren Typs einen Zeiger, ein Handle oder eine andere Datenstruktur enthält, die für eine bestimmte Umgebung spezifisch ist und in einer anderen Umgebung nicht sinnvoll rekonstituiert werden kann, dann sollten Sie möglicherweise NonSerializedAttribute
zu diesem Feld.
Siehe MSDN für weitere Einzelheiten.
Bearbeiten 1
Jeder Grund, etwas nicht als serialisierbar zu markieren
Beim Übertragen oder Speichern von Daten müssen Sie nur die erforderlichen Daten senden oder speichern. So gibt es weniger Übertragungsverzögerungen und Speicherprobleme. So können Sie bei der Serialisierung unnötige Datenpakete ausschließen.
Da sich die ursprüngliche Frage auf das SerializableAttribut bezog, ist zu beachten, dass dieses Attribut nur bei Verwendung des BinaryFormatter oder SoapFormatter gilt.
Es ist etwas verwirrend, wenn man sich nicht wirklich mit den Details beschäftigt, wann man es verwenden sollte und was sein eigentlicher Zweck ist.
Es hat NICHTS mit XML- oder JSON-Serialisierung zu tun.
Zusammen mit dem SerializableAttribut werden die ISerializable-Schnittstelle und die SerializationInfo-Klasse verwendet. Diese werden auch nur mit dem BinaryFormatter oder SoapFormatter verwendet.
Wenn Sie nicht beabsichtigen, Ihre Klasse mit Binary oder Soap zu serialisieren, brauchen Sie Ihre Klasse nicht als [Serializable] zu kennzeichnen. XML- und JSON-Serialisierer sind sich ihrer Existenz nicht einmal bewusst.
Einige praktische Anwendungen für das [Serializable]
Attribut:
BinaryFormatter
Klasse in System.Runtime.Serialization.Formatters.BinaryClipboard.SetData()
- Nicht-serialisierbare Klassen können nicht in die Zwischenablage gelegt werden.MarshalByRefObject
) muss serialisierbar sein.Dies sind die häufigsten Anwendungsfälle, die mir begegnet sind.
Unter Serialisierung versteht man die Umwandlung eines Objekts in einen Strom von Bytes, um das Objekt zu speichern oder es an einen Speicher, eine Datenbank oder eine Datei zu übertragen.
Wie die Serialisierung funktioniert
Diese Illustration zeigt den gesamten Prozess der Serialisierung:
Das Objekt wird in einen Stream serialisiert, der die Daten enthält. Der Stream kann auch Informationen über den Objekttyp enthalten, z. B. die Version, die Kultur und den Assembly-Namen. Von diesem Stream aus kann das Objekt in einer Datenbank, einer Datei oder im Speicher abgelegt werden.
Einzelheiten in Microsoft Dokumente .
Hier ein kurzes Beispiel, wie die Serialisierung funktioniert. Ich war auch über das gleiche lernen und ich fand zwei Links nützlich. Was Serialisierung ist und wie sie in .NET durchgeführt werden kann .
Ein Beispielprogramm zur Erläuterung der Serialisierung
Wenn Sie das obige Programm nicht verstehen, finden Sie hier ein viel einfacheres Programm mit Erklärung aquí .
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.