예제 #1
0
        public CSharpAgentType(System.Type type)
        {
            this.type = type;

            unityType            = IL.Help.GetField(type, "unity").FieldType;
            csharpAgentSerialize = BinarySerializable.GetByType(type) as CSharpAgentSerialize;
        }
예제 #2
0
        }                                                                    // 类型标识

        void ITypeSerialize.WriteTo(object value, IStream ms)
        {
            if (value == null)
            {
                ms.WriteString(string.Empty);
                return;
            }

            var type   = IL.Help.GetInstanceType(value);
            var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type);

            ms.WriteString(type.FullName);
            serial.WriteTo(value, ms);
        }
예제 #3
0
        // 把值写入到ab当中
        void ITypeSerialize.WriteTo(object value, Nested.AnyBase ab)
        {
            if (value == null)
            {
                ab.typeName = string.Empty;
                return;
            }

            var type   = IL.Help.GetInstanceType(value);
            var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type);

            ab.typeName = type.FullName;
            serial.WriteTo(value, ab);
        }
예제 #4
0
        // 把值写入到ab当中
        void ITypeSerialize.WriteTo(object value, Nested.AnyBase ab)
        {
            if (value == null)
            {
                ab.valueType = 0;
                return;
            }

            ab.valueType = 1;
            var type   = IL.Help.GetInstanceType(value);
            var serial = BinarySerializable.GetByType(type);

            TypeDesc typeDesc = TypeDesc.Get(type);

            ab.typeName = typeDesc.ToBase64();
            serial.WriteTo(value, ab);
        }
예제 #5
0
        }                                                                     // 类型标识

        void ITypeSerialize.WriteTo(object value, IStream ms)
        {
            if (value == null)
            {
                ms.WriteByte(0);
                return;
            }

            ms.WriteByte(1);
            var type   = IL.Help.GetInstanceType(value);
            var serial = BinarySerializable.GetByType(type);

            TypeDesc td = TypeDesc.Get(type);

            td.Write(ms);
            serial.WriteTo(value, ms);
        }
예제 #6
0
        // 通过ab来设置值
        void ITypeSerialize.MergeFrom(ref object value, Nested.AnyBase ab)
        {
            if (ab.valueType == 0)
            {
                value = null;
                return;
            }

            var typeDesc = TypeDesc.CreateByBase64(ab.typeName);

            System.Type type = typeDesc.GetCurrentType();
            if (value == null || (IL.Help.GetInstanceType(value) != type))
            {
                value = IL.Help.Create(type);
            }

            var serial = BinarySerializable.GetByType(type);

            serial.MergeFrom(ref value, ab);
        }
예제 #7
0
        void ITypeSerialize.MergeFrom(ref object value, IStream ms)
        {
            string fullName = ms.ReadString();

            if (string.IsNullOrEmpty(fullName))
            {
                return;
            }

            System.Type type;
            if (value == null || ((type = IL.Help.GetInstanceType(value)).FullName != fullName))
            {
                if (IL.Help.TryGetTypeByFullName(fullName, out type))
                {
                    value = IL.Help.Create(type);
                }
            }

            var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type);

            serial.MergeFrom(ref value, ms);
        }
예제 #8
0
        void ITypeSerialize.MergeFrom(ref object value, IStream ms)
        {
            if (ms.ReadByte() == 0)
            {
                value = null;
                return;
            }

            TypeDesc td = new TypeDesc();

            td.Reader(ms);

            System.Type type = td.GetCurrentType();
            if (value == null || (IL.Help.GetInstanceType(value) != type))
            {
                value = IL.Help.Create(type);
            }

            var serial = BinarySerializable.GetByType(type);

            serial.MergeFrom(ref value, ms);
        }