Serialisierung möglich für ein struct
Kann ich serialisieren eines struct
Typ direkt da seinen Wert geben.
Benutzt habe ich es in der Klasse aber Frage mich, ob das möglich für eine struct allein.
z.B.
struct student
{
name string; --string is a reference type
age int;
designation string; --string is a reference type
salary double;
};
class foo
{
foo(){
student s;
s.name = "example";
serialize(s);
}
}
Diese link sagt
"Ich habe versucht, mein struct ISerializable implementieren, aber ich kann nicht die Umsetzung der geforderten Konstruktor, denn dies ist ein struct und nicht ein Objekt."
Haben Sie es ausprobiert?
es ist möglich, nur follo den Anweisungen auf diesem link: stackoverflow.com/questions/628843/...
Es gibt keine akzeptierte Antwort auf diesen link selbst. Blick auf den link, es scheint Entwickler zu schreiben hat seinen eigenen code irgendwie. Aber nicht direkt möglich
Nur weil eine Antwort nicht akzeptiert wird, bedeutet nicht, dass es nicht funktioniert; es kann nur bedeuten, die OP konnte nicht belästigt werden, um auf den check. Es hat 7 upvotes, also es ist etwas Wert zu. Versuchen Sie es.
Also nicht nur, Sie verweigern sogar Versuch das problem selbst zu lösen, verweigern Sie sogar betrachten die Antwort, die Sie gegeben haben? Ich denke, Sie haben einfach kein Interesse daran, tatsächlich die Lösung des Problems.
es ist möglich, nur follo den Anweisungen auf diesem link: stackoverflow.com/questions/628843/...
Es gibt keine akzeptierte Antwort auf diesen link selbst. Blick auf den link, es scheint Entwickler zu schreiben hat seinen eigenen code irgendwie. Aber nicht direkt möglich
Nur weil eine Antwort nicht akzeptiert wird, bedeutet nicht, dass es nicht funktioniert; es kann nur bedeuten, die OP konnte nicht belästigt werden, um auf den check. Es hat 7 upvotes, also es ist etwas Wert zu. Versuchen Sie es.
Also nicht nur, Sie verweigern sogar Versuch das problem selbst zu lösen, verweigern Sie sogar betrachten die Antwort, die Sie gegeben haben? Ich denke, Sie haben einfach kein Interesse daran, tatsächlich die Lösung des Problems.
InformationsquelleAutor Shantanu Gupta | 2015-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können. Ich habe gerade so, mit dem folgenden code.
Was hat es zu tun? Genau das, was es sollte, serialisiert und deserialisiert die
struct
.Ausgabe:
Lustig, die
TestStruct
serialisiert und deserialisiert an/ausJSON
.Was über einen default-Konstruktor? Alle
struct
Objekte mit default-Konstruktor, es ist eine der grundlegende Eigenschaften einerstruct
Objekt, und dass der default-Konstruktor ist lediglich verantwortlich für das clearing der Speicher, die benötigt werden für einestruct
Objekt die default-Werte. Daher dieserializer
weiß schon es gibt einen default-Konstruktor, und kann daher fortfahren, als ob es ein reguläres Objekt (die es).Hinweise:
In diesem Beispiel verwendet
System.Web.Script.Serialization.JavaScriptSerializer
.Dieses Beispiel setzt Voraus, dass alle Variablen innerhalb der
struct
sind Eigenschaften. Wenn Sie nicht sind, dann ist diese Antwort kann nicht funktionieren. Es scheint zu funktionieren für mich mitfields
an die Stelle derproperties
, aber das ist kein best-practice. Sie sollten immer stellen Sie sicher, dass diepublic
Variablen in allen Objekten sindproperties
.Da
serialization
egal. Wennserialization
würde nicht lassen Sie unsserialize
Wert-Typen, dann könnten wir nicht serialisieren nichts irgendwann alle Objekte verlassen sich auf ein Wert-Typ. ALLEstruct
Objekte haben einedefault constructor
, die alle serialisierungsprogramme (ich habe zumindest) erfordern. Sie nicht nehmen Sie das Weg. Es ist eine der Grundeigenschaften einerstruct
Objekt. Sie sollte gültig sein, noch, wenn Sie alle Speicher, die Sie enthalten, ist gelöscht.Ich lief nur mit denen, die
properties
handeln alsfields
und es lief erfolgreich. Die wichtigsten Anforderungen fürserialization
werden, dass die Variablen werdenpublic
haben einen accessor/getter
, und haben einen mutator/setter
.CS0103: Der name
Serializable
existiert nicht im aktuellen Kontext.InformationsquelleAutor Der Kommissar
Ok, ich mache es einfacher für Ihre, dies ist, wie ich es Tat
Für Zeichenfolgen, die Sie sind gonna brauchen ein wenig mehr, wie
code
[MarshalAs(UnmanagedType.Byvalarray-Attribut, SizeConst = 5)] public byte[] Passwort = new byte[5];Dies bedeutet, es gibt immer eine chance zu verlieren, die Zeichen, die während der Serialisierung, wenn die Länge der string geht über die Eingangs angegebene Länge in struct
Warum machst du es so?
.NET
bietetXML
,Binary
undJSON
serialisierungsprogramme gebaut.InformationsquelleAutor Zalomon