Ich bin mir bewusst, warum Serialisierung von statischen Variablen standardmäßig nicht funktionieren würde, aber die Antworten auf this question scheinen anzuzeigen, dass es mit den richtigen Attributen möglich ist.JSON Statische Eigenschaften Serialisierung funktioniert nicht
Meine Klasse sieht wie folgt aus:
[JsonObject(MemberSerialization.OptIn)]
public class c
{
[JsonProperty]
public static double x{ get; set; } = 70;
[JsonProperty]
public static double y{ get; set; } = 36;
[JsonProperty]
public static double z{ get; set; } = 12;
}
Und es tritt JSON.net durch
StatePersister.SaveState(new c(), fileName);
public static void SaveState(Object o, string savePath, FileFormat? format = null)
{
DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true };
DataContractJsonSerializer serializer = new DataContractJsonSerializer(o.GetType(), settings);
using (var stream = File.Create(savePath))
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, Encoding.UTF8, true, true, "\t"))
{
serializer.WriteObject(writer, o);
writer.Flush();
}
}
}
Ich habe versucht, es mit und ohne [JsonObject (MemberSerialization.OptIn)] Attribut und So oder so bekomme ich eine Datei, die nur "{}" enthält
Durch den Code Ich weiß, dass das Objekt instanziiert wird, und es wird im richtigen Objekt mit der übergeben richtige Information.
Warum haben Sie statische Eigenschaften? Warum machen Sie sie nicht stattdessen nicht statisch? –
Aus den gleichen Gründen verwendet jeder statische Variablen. Wir brauchen Variablen, die von überall im Code zugänglich sind. Da es nie mehr als eine Instanz geben muss, wäre das Umgehen einer einzelnen Instanz unordentlich und könnte Möglichkeiten für viele Fehler eröffnen. Alle Änderungen an diesen Eigenschaften, die von überall vorgenommen werden, müssen über das gesamte Programm hinweg synchronisiert werden. – ccwscott