[Serializable]
public class ModelResource:ISerializable
{
public Int64 Ore { get; private set; }
public Int64 Crystal { get; private set; }
public Int64 Hydrogen { get; private set; }
//muss ignoriert werden
public Int64 Total { get { return Ore + Hydrogen + Crystal; } }
public string ResourceType { get; private set; }
public Int64 HerculesNeeded { get { return Total / 25000; } }
public Int64 AtlasNeeded { get { return Total / 5000; } }
public bool IsPlanet { get { return ResourceType == "Planet"; } }
//verursacht, dass der Serialisierer stapelüberlauf
public ModelResource MakeChild {get{return new ModelResource(Ore/2,Crystal/2,Hydrogen/2);}}
public string ToJson()
{
var jss = new System.Web.Script.Serialization.JavaScriptSerializer(new SimpleTypeResolver());
return jss.Serialize(this); //wirft Ausnahme bei Überschreitung der Rekursionsgrenze
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("Ore", Ore);
info.AddValue("Crystal", Crystal);
info.AddValue("Hydrogen", Hydrogen);
info.AddValue("ResourceType", ResourceType);
}
private ModelResource(SerializationInfo si, StreamingContext context)
{
Ore = si.GetInt64("Ore");
Crystal = si.GetInt64("Crystal");
Hydrogen = si.GetInt64("Hydrogen");
ResourceType = si.GetString("ResourceType");
}
#endregion
}
Anscheinend habe ich dieses eine Eigenschaft ausgelassen, ich dachte, dass der JavascriptSerializer vielleicht auf das ISerializable-Interface achten würde.
0 Stimmen
Können Sie einen Code-Auszug zeigen, in dem Sie ToJson aufrufen? Es wirft keinen Fehler, wenn ich es ausprobiere...
0 Stimmen
Ich vermute zumindest, dass einige Code weggelassen wurde, da es keine einfache Möglichkeit gibt, die Werte zu setzen - ?