public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { var props = type.GetProperties();//.Select().ToList(); foreach (var prop in props) { Serializer.SerializeObject(prop.PropertyType, prop.GetValue(value), bw, settings, null, null); } }
public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { bw.Write(value != null); if (value == null) { return; } var nullableUnderlyingType = Nullable.GetUnderlyingType(type); var serializer = SerializerRegistry.GetSerializer(nullableUnderlyingType); Serializer.SerializeObject(nullableUnderlyingType, value, bw, settings, serializer, serializerArg); }
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.WriteCompactDateTime((DateTime)value, typedSerializerArg.TickResolution); return; } bw.Write7BitLong(((DateTime)(object)value).Ticks); //todo: compact }
public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { var typedSerializerArg = GetSerializerArg <FloatingPointSerializerArg>(type, settings, serializerArg); if (typedSerializerArg != null) { bw.WriteCompactDecimal((decimal)(object)value, typedSerializerArg.DecimalDigits); return; } bw.WriteCompactDecimal((decimal)(object)value); }
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); } }
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 classMap = SerializerRegistry.GetClassMap(type); //todo: also base types? var props = value.GetType().GetProperties() .OrderBy(x => x.MetadataToken) .ToList(); foreach (var prop in props) { MemberMap memberMap = classMap?.GetMemberMap(prop.Name); if (memberMap?.Ignored == true) { continue; } var val = prop.GetValue(value); Serializer.SerializeObject(prop.PropertyType, val, bw, settings, memberMap?.Serializer, memberMap?.SerializerArg); } }
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); } }
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 classMap = SerializerRegistry.GetClassMap(type); //todo: also base types? var fastReflectionClassMap = GetFastReflectionClassMap(type); var propNames = fastReflectionClassMap.PropertyInfos.Keys.ToList(); foreach (var propName in propNames) { MemberMap memberMap = classMap?.GetMemberMap(propName); if (memberMap?.Ignored == true) { continue; } var pInfo = fastReflectionClassMap.PropertyInfos[propName]; var val = pInfo.Getter(value); Serializer.SerializeObject(pInfo.PropertyType, val, bw, settings, memberMap?.Serializer, memberMap?.SerializerArg); } }
public abstract void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value);
public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { var guidByte = ((Guid)value).ToByteArray(); Serializer.SerializeObject(typeof(byte[]), guidByte, bw, settings, null, null); }
public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { bw.Write((string)(object)value); }
public override void Serialize(BinaryTypesWriter bw, Type type, SerializerSettings settings, ISerializerArg serializerArg, object value) { var val = Convert.ChangeType(value, typeof(ulong)); bw.Write7BitULong((ulong)val); }