Note that there are some explanatory texts on larger screens.

plurals
  1. PODataContractSerializer on mono returns weird errors
    primarykey
    data
    text
    <p>I have made a simple data serializer to just serialize my data on it, There's so simple ways to serialize and deserialize the data, I got two ways to do that:</p> <pre><code>public string Serialize() { SerializedData data = new SerializedData(this); DataContractSerializer serializer = new DataContractSerializer(typeof(SerializedData)); System.IO.MemoryStream s = new System.IO.MemoryStream(); serializer.WriteObject(s, data); return Convert.ToBase64String(s.ToArray()); } public static MessageBlock Deserialize(string name, string sdata, Map map) { byte[] bdata = Convert.FromBase64String(sdata); MessageBlock MessageBlock = new MessageBlock(); DataContractSerializer serializer = new DataContractSerializer(typeof(SerializedData)); System.IO.MemoryStream s = new System.IO.MemoryStream(bdata); SerializedData data = (SerializedData)serializer.ReadObject(s); data.UpdateMessageBlock(MessageBlock); return MessageBlock; } [DataContract] private class SerializedData { [DataMember] public String Name; [DataMember] public String Creator; [DataMember] public DateTime Created; [DataMember] public String World; [DataMember] public Vector3I AffectedBlock; [DataMember] public int XMin; [DataMember] public int XMax; [DataMember] public int YMin; [DataMember] public int YMax; [DataMember] public int ZMin; [DataMember] public int ZMax; [DataMember] public String Message; public SerializedData(MessageBlock MessageBlock) { lock (MessageBlock) { Name = MessageBlock.Name; Creator = MessageBlock.Creator; Created = MessageBlock.Created; World = MessageBlock.World; AffectedBlock = MessageBlock.AffectedBlock; XMin = MessageBlock.Range.Xmin; XMax = MessageBlock.Range.Xmax; YMin = MessageBlock.Range.Ymin; YMax = MessageBlock.Range.Ymax; ZMin = MessageBlock.Range.Zmin; ZMax = MessageBlock.Range.Zmax; Message = MessageBlock.Message; } } public void UpdateMessageBlock(MessageBlock MessageBlock) { MessageBlock.Name = Name; MessageBlock.Creator = Creator; MessageBlock.Created = Created; MessageBlock.World = World; MessageBlock.AffectedBlock = AffectedBlock; MessageBlock.Range = new MessageBlockRange(XMin, XMax, YMin, YMax, ZMin, ZMax); MessageBlock.Message = Message; } } </code></pre> <p>Server i run code on it is ubuntu using mono 3.2.1, There's no problem for windows, I can run codes easily without any error on windows NET 4, But it seems like mono doesn't support DataContractSerializer, The error i get on mono is:</p> <p><code> 09:04:19 > ERROR: Map failed to save: System.Runtime.Serialization.SerializationException: Circular reference of an object in the object graph was found: '(0,0,-1)' of type fCraft.Vector3I at System.Runtime.Serialization.SerializationMap.Serialize (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.XmlFormatterSerializer.Serialize (System.Type type, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.SerializeNonReference (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.Serialize (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.XmlFormatterSerializer.Serialize (System.Type type, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.SerializeNonReference (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.Serialize (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.XmlFormatterSerializer.Serialize (System.Type type, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.SerializeNonReference (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.SerializationMap.Serialize (System.Object graph, System.Runtime.Serialization.XmlFormatterSerializer serializer) [0x00000] in :0 at System.Runtime.Serialization.XmlFormatterSerializer.Serialize (System.Type type, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.XmlFormatterSerializer.Serialize (System.Xml.XmlDictionaryWriter writer, System.Object graph, System.Type declaredType, System.Runtime.Serialization.KnownTypeCollection types, Boolean ignoreUnknown, Int32 maxItems, System.String root_ns, Boolean preserveObjectReferences, System.Runtime.Serialization.DataContractResolver resolver, System.Runtime.Serialization.DataContractResolver defaultResolver) [0x00000] in :0 at System.Runtime.Serialization.DataContractSerializer.WriteObjectContent (System.Xml.XmlDictionaryWriter writer, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject (System.Xml.XmlDictionaryWriter writer, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.DataContractSerializer.WriteObject (System.Xml.XmlWriter writer, System.Object graph) [0x00000] in :0 at System.Runtime.Serialization.XmlObjectSerializer.WriteObject (System.IO.Stream stream, System.Object graph) [0x00000] in :0 at fCraft.MessageBlock.Serialize () [0x00000] in :0 at fCraft.MessageBlockSerialization.Serialize (fCraft.Map map, System.IO.Stream stream, IMapConverterEx converter) [0x00000] in :0 at fCraft.MapConversion.MapFCMv3+&lt;>c_<em>DisplayClass4.b</em>_2 (IConverterExtension ex) [0x00000] in :0 at System.Linq.Enumerable.Sum[IConverterExtension] (IEnumerable<code>1 source, System.Func</code>2 selector) [0x00000] in :0 at fCraft.MapConversion.MapFCMv3.WriteMetadata (System.IO.Stream stream, fCraft.Map map) [0x00000] in :0 at fCraft.MapConversion.MapFCMv3.Save (fCraft.Map mapToSave, System.String fileName) [0x00000] in :0 at fCraft.MapConversion.MapUtility.TrySave (fCraft.Map mapToSave, System.String fileName, MapFormat format) [0x00000] in :0 09:04:19 > Warning: Logger.SubmitCrashReport: System.UriFormatException: Uri is longer than the maximum 32766 characters. at System.Uri.EscapeDataString (System.String stringToEscape) [0x00000] in :0 at fCraft.Logger.LogAndReportCrashInner (System.String message, System.String assembly, System.Exception exception) [0x00000] in :0 </code></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload