public SerializedObjectFields InternalGetReplicatedFields(SerializableObject obj) { SerializedObjectFields fields; if (_serializedFields.TryGetValue(obj.classID, out fields)) { return(fields); } fields = new SerializedObjectFields(obj.GetType(), ReplicatedObjectFieldSerializerFactory.instance, true); return(fields); }
static int StaticClassIDSlow(SerializableObject obj) { Type t = obj.GetType(); int id; if (_staticClassIDs.TryGetValue(t, out id)) { return(id); } var typeName = t.FullName; if ((t != obj.serverType) && (t != obj.clientType)) { // unrelated class types! t = null; throw new InvalidReplicatedObjectClassException("Replication error in class " + typeName + ": The Server and Client types are not correct, did you intend for this type be marked abstract?"); } else if ((obj.serverType != obj.clientType) && (obj.serverType.BaseType == obj.clientType.BaseType)) { t = t.BaseType; } else if (obj.serverType.BaseType == obj.clientType) { t = obj.clientType; } else if (obj.clientType.BaseType == obj.serverType) { t = obj.serverType; } else if (obj.serverType != obj.clientType) { t = null; } if (t == null) { throw new InvalidReplicatedObjectClassException("Replication error in class " + typeName + ": Server and Client specialized object classes must derive from a common base class which derrives from SerializableObject."); } id = t.AssemblyQualifiedName.GetHashCode(); _staticClassIDs[t] = id; return(id); }
public void TestSerialization() { // Declare variables MemoryStream stream = null; // Create object var obj = new SerializableObject(); // Set some values obj.StringValue = "SerializationHelperTest"; obj.IntValue = 1; obj.BoolValue = false; obj.ObjectValue = DateTime.MinValue; // Create formatter #if NET var serializer = new BinaryFormatter(); #else var serializer = SerializationHelper.GetDataContractSerializer(typeof(SerializableObject), obj.GetType(), "test", obj, false); #endif #region Serialize to disk // Create stream using (stream = new MemoryStream()) { // Serialize #if NET serializer.Serialize(stream, obj); #else serializer.WriteObject(stream, obj); #endif #endregion #region Deserialize from disk // Reset stream position stream.Position = 0L; // Serialize #if NET obj = (SerializableObject)serializer.Deserialize(stream); #else obj = (SerializableObject)serializer.ReadObject(stream); #endif } #endregion // Test values Assert.AreEqual("SerializationHelperTest", obj.StringValue); Assert.AreEqual(1, obj.IntValue, 1); Assert.AreEqual(false, obj.BoolValue); Assert.AreEqual(DateTime.MinValue, obj.ObjectValue); }
public void TestSerialization() { // Declare variables MemoryStream stream = null; // Create object var obj = new SerializableObject(); // Set some values obj.StringValue = "SerializationHelperTest"; obj.IntValue = 1; obj.BoolValue = false; obj.ObjectValue = DateTime.MinValue; // Create formatter #if NET var serializer = new BinaryFormatter(); #else var serializer = SerializationHelper.GetDataContractSerializer(typeof (SerializableObject), obj.GetType(), "test", obj, false); #endif #region Serialize to disk // Create stream using (stream = new MemoryStream()) { // Serialize #if NET serializer.Serialize(stream, obj); #else serializer.WriteObject(stream, obj); #endif #endregion #region Deserialize from disk // Reset stream position stream.Position = 0L; // Serialize #if NET obj = (SerializableObject)serializer.Deserialize(stream); #else obj = (SerializableObject) serializer.ReadObject(stream); #endif } #endregion // Test values Assert.AreEqual("SerializationHelperTest", obj.StringValue); Assert.AreEqual(1, obj.IntValue, 1); Assert.AreEqual(false, obj.BoolValue); Assert.AreEqual(DateTime.MinValue, obj.ObjectValue); }