Was tut [- System.SerializableAttribute()] do
Ich bin auf der Suche auf jemanden elses C# - code vor einer öffentlichen enum-es gibt die folgenden Zeilen:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
Kann jemand erklären in verständlicher Sprache, was diese Zeilen tun.
InformationsquelleAutor der Frage Graham | 2012-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
System.SerializableAttribute gibt zur Laufzeit, die Instanzen dieser Klasse serialisiert werden kann
ZB. Sie geben ein Objekt in einer WCF-service-Aufruf. Wenn das Objekt dieses Attribut und alle Objekte darin sind serializable, die Laufzeit, verwandeln dieses Objekt in JSON oder XML, je nach Art der Ressource, auf die die web-service gibt.
InformationsquelleAutor der Antwort Cristian Chereches
Dies ist tatsächlich sehr subtil...
Auf der Oberflächedie Antwort ist einfach, "es fügt den
SerialiableAttribute
den Metadaten, die für die Klasse", in denen der Zweck derSerializableAttribute
zu werben (um Dinge wieBinaryFormatter
), dass ein Typ serialisiert werden kann.BinaryFormatter
wird sich weigern, zu serialisieren Dinge, die nicht explizit beworben, für die Serialisierung. Dies kann eine Folge derBinaryFormatter
verwendet wird, zu implementieren remotingund um zu verhindern, dass Daten versehentlich undicht über eine remoting-Grenze.Beachten Sie, dass die meisten serialisierungsprogramme nicht Pflege über
SerializableAttribute
so dass diese nur schlägt in Dinge wieBinaryFormatter
. Zum Beispiel, keiner vonXmlSerializer
DataContractSerializer
JavaScriptSerializer
JSON.NET oder protobuf-net wirklich kümmertSerializableAttribute
.Jedoch eigentliches ist nicht ein standard-Attribut, hat aber Besondere Behandlung durch den compiler:
.custom instance
- Werte (IL-Bedingungen)SerialiableAttribute
eigentlich Karten zu einer CLI -.class
Flaggeserializable
Ändert das nichts an der Bedeutungaber : als Neuheit wird in der Tat
SerializableAttribute
ist eigentlich nicht umgesetzt, als Attribut.InformationsquelleAutor der Antwort Marc Gravell
Dies ist nur so lange die hand für
[Serializable]
. Es kennzeichnet die Klasse als eine, die kann 'konvertiert' und von anderen Formaten.Typische Beispiele sind 'Serialisierung' aus der Klasse 'auf' ein JSON-oder XML-Daten-Struktur, und auch die äquivalent-Umrechnung 'von' solchen Strukturen.
Betrachten Sie eine Klasse
Als serialisierte einer JSON-Struktur erhalten wir:
Gegeben und der zwei-Wege-Natur des Prozesses, wenn wir erhalten Informationen von diesem format (z.B. Rücken von einigen web-service), dann könnten wir glücklich zu Serialisieren, es wieder in eine Instanz dieser Klasse.
Gebäude auf der JSON-Beispiel, finden wir eine Reihe von Klassen im namespace
System.Web.Script.Serialization
uns helfen kann, mit dieser. Insbesondere dieJavaScriptSerializer
Klasse hilft uns mit der Bereitstellung vonSerialize()
undDeserialize
Methoden.InformationsquelleAutor der Antwort James Wiseman
Vom die Dokumentation:
Finden Sie in der Dokumentation ein Beispiel.
InformationsquelleAutor der Antwort larsmoa