public object Deserialize(IByteBuffer buffer, SerializationMetadata metadata) { var serializer = SerializationMap.GetSerializator(typeof(IObject).GetTypeInfo()); var obj = serializer.Deserialize(buffer, metadata); return(obj is TBoolTrue); }
public void Serialize(object value, IByteBuffer buffer, SerializationMetadata metadata) { var serializer = SerializationMap.GetSerializator(typeof(IObject).GetTypeInfo()); var b = (bool)value; value = b ? (object)True : False; serializer.Serialize(value, buffer, metadata); }
public object Deserialize(IByteBuffer buffer, SerializationMetadata typeMetadata) { var id = buffer.ReadUnsignedIntLE(); if (!SerializationMap.GetTypeById(id, out var typeInfo)) { throw new NotSupportedException(); } if (Equals(typeInfo, NullTypeInfo)) { return(null); } var customObjectSerializer = SerializationMap.GetSerializator(typeInfo); if (customObjectSerializer != null && !Equals(customObjectSerializer.SupportedType, SupportedType)) { return(customObjectSerializer.Deserialize(buffer, typeMetadata)); } var metadatas = GetMetadatas(typeInfo); var typeForCreate = (typeMetadata != null && typeInfo.IsGenericType && typeInfo.IsClass ? typeMetadata.PropertyTypeInfo : typeInfo).AsType(); var obj = Activator.CreateInstance(typeForCreate); foreach (var metadata in metadatas) { if (metadata.CanSerializeIndex.HasValue) { var flags = (BitArray)metadata.CanSerializeSource.GetValue(obj); if (!flags[metadata.CanSerializeIndex.Value]) { continue; } } if (metadata.FromFlagIndex.HasValue) { var flags = (BitArray)metadata.FromFlagSource.GetValue(obj); var flagValue = flags[metadata.FromFlagIndex.Value]; metadata.PropertyInfo.SetValue(obj, flagValue); continue; } var value = Serializer.Deserialize(buffer, metadata); metadata.PropertyInfo.SetValue(obj, value); } return((IObject)obj); }
public void Serialize(object obj, IByteBuffer buffer, SerializationMetadata _) { if (obj == null) { obj = Null; } var objectType = obj.GetType().GetTypeInfo(); if (SerializationMap.GetIdByType(objectType, out var typeId)) { buffer.WriteIntLE((int)typeId); var metadatas = GetMetadatas(objectType); ComputeFlags(obj, metadatas); foreach (var metadata in metadatas) { var value = metadata.PropertyInfo.GetValue(obj); if (metadata.CanSerializeIndex.HasValue) { var flags = (BitArray)metadata.CanSerializeSource.GetValue(obj); if (!flags[metadata.CanSerializeIndex.Value]) { continue; } } if (metadata.FromFlagIndex.HasValue) { var flags = (BitArray)metadata.FromFlagSource.GetValue(obj); flags[metadata.FromFlagIndex.Value] = (bool)value; continue; } Serializer.Serialize(value, buffer, metadata); } } else { throw new NotSupportedException(); } }
private string ToConfigData() { Dictionary <string, string> ConfigMap = new Dictionary <string, string>(); SerializationMap <string, ConvertStrategy> serStrategyMap = new SerializationMap <string, ConvertStrategy>(StrategyMap); string StrategyMapStr = JsonUtility.ToJson(serStrategyMap); ConfigMap["StrategyMap"] = StrategyMapStr; SerializationMap <string, string> serMeshPathMap = new SerializationMap <string, string>(MeshPathMap); string MeshPathMapStr = JsonUtility.ToJson(serMeshPathMap); ConfigMap["MeshPathMap"] = MeshPathMapStr; SerializationMap <string, string> serConfigMap = new SerializationMap <string, string>(ConfigMap); string dataAsJson = JsonUtility.ToJson(serConfigMap); return(dataAsJson); }
static VectorSerializer() { SerializationMap.GetIdByType(typeof(TVector <>).GetTypeInfo(), out VectorId); }