[Serializable]
public class ModelResource:ISerializable
{
public Int64 Ore { get; private set; }
public Int64 Crystal { get; private set; }
public Int64 Hydrogen { get; private set; }
//needs to be ignored
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"; } }
//causes serializer to stackoverflow
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); //throws recursion limit exceed exception
}
#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
}
NET Framework, use Newtonsoft. Json. The JavaScriptSerializer class is used internally by the asynchronous communication layer to serialize and deserialize the data that is passed between the browser and the Web server. You cannot access that instance of the serializer.
Serialization is in the System. Web. Extensions library.
Serialization (in VB.NET). SERIALIZATION. For serialization purpose the JavaScriptSerializer has the following method: - Serialize – this method serializes an object and converts it to a JSON string. This means, when we need to serialize a Dictionary, we will need to convert it to object type.
Normally I would suggest telling it to ignore parent properties (which create cycles) - in this case by adding [ScriptIgnore]
- but I can't see anything other than basic members - is this class by itself enough to cause the error?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With