Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }