示例#1
0
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            var typedSerializerArg = GetSerializerArg <DateTimeSerializerArg>(type, settings, serializerArg);

            if (typedSerializerArg != null && typedSerializerArg.TickResolution > 0)
            {
                bw.Write7BitLong(((TimeSpan)(object)value).Ticks / typedSerializerArg.TickResolution);
                return;
            }

            bw.Write7BitLong(((TimeSpan)(object)value).Ticks);
        }
示例#2
0
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            IList list = value as IList;

            if (list == null)
            {
                bw.Write7BitLong(-1);
                return;
            }

            var count = list.Count;

            bw.Write7BitLong(count);
            Type genericArgtype = type.GetGenericArguments()[0];

            for (int i = 0; i < count; i++)
            {
                Serializer.SerializeObject(genericArgtype, list[i], bw, settings, null, null);
            }
        }
示例#3
0
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            Array array = value as Array;

            if (array == null)
            {
                bw.Write7BitLong(-1);
                return;
            }

            var count = array.Length;

            bw.Write7BitLong(count);
            Type elementType = array.GetType().GetElementType();

            for (int i = 0; i < count; i++)
            {
                Serializer.SerializeObject(elementType, array.GetValue(i), bw, settings, null, null);
            }
        }
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            var dictionary = value as IDictionary;

            if (dictionary == null)
            {
                bw.Write7BitLong(-1);
                return;
            }
            var count = dictionary.Count;

            bw.Write7BitLong(count);
            Type genericArgKey = type.GetGenericArguments()[0];
            Type genericArgVal = type.GetGenericArguments()[1];

            foreach (var key in dictionary.Keys)
            {
                Serializer.SerializeObject(genericArgKey, key, bw, settings, null, null);
                Serializer.SerializeObject(genericArgVal, dictionary[key], bw, settings, null, null);
            }
        }
示例#5
0
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            var hashset = value as System.Collections.IEnumerable;

            if (hashset == null)
            {
                bw.Write7BitLong(-1);
                return;
            }

            var method = type.GetProperty("Count");
            var count  = (int)method.GetValue(hashset);

            bw.Write7BitLong(count);
            Type genericArgtype = type.GetGenericArguments()[0];

            foreach (var val in hashset)
            {
                Serializer.SerializeObject(genericArgtype, val, bw, settings, null, null);
            }
        }
        public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
        {
            var val = Convert.ChangeType(value, typeof(long));

            bw.Write7BitLong((long)val);
        }
示例#7
0
 public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value)
 {
     bw.Write7BitLong((int)(object)value);
 }