Ejemplo n.º 1
0
            public override bool Equals(object obj)
            {
                serizlizedObj other = obj as serizlizedObj;

                if (other == null)
                {
                    return(false);
                }

                return(ReferenceEquals(other.obj, this.obj));
            }
Ejemplo n.º 2
0
        public void SerializeObject <T>(System.IO.BinaryWriter writer, T obj) where T : ISWCSerializable
        {
            if (obj == null)
            {
                WriteTag(writer, TagType.NULLINSTANCE);
                return;
            }
            if (!(obj is RunTimeValueBase))
            {
                //foreach (var item in serizlizedObjects)
                //{
                //	//如果有完全相同的对象
                //	if (ReferenceEquals(item.Value, obj))
                //	{
                //		WriteTag(writer, TagType.INSTANCEATCACHE);
                //		writer.Write(item.Key);
                //		return;
                //	}
                //}

                serizlizedObj test = new serizlizedObj(); test.obj = obj;

                if (dictSerizlized.ContainsKey(test))
                {
                    int key = dictSerizlized[test];

                    WriteTag(writer, TagType.INSTANCEATCACHE);
                    writer.Write(key);
                    return;
                }
            }
            {
                WriteTag(writer, TagType.WRITEINSTANCEANDCACHEIT);

                writer.Write(serizlizedObjects.Count);

                int key = serizlizedObjects.Count;
                serizlizedObjects.Add(serizlizedObjects.Count, obj);

                if (!(obj is RunTimeValueBase))
                {
                    serizlizedObj serizlizedObj = new serizlizedObj();
                    serizlizedObj.obj = obj;
                    dictSerizlized.Add(serizlizedObj, key);
                }
                obj.Serialize(writer, this);
            }
        }