public static object Deserialize(string data, Type t) { if (t == null) { return(null); } if (((data != null) ? data.Length : 0) != 0) { if (t.IsEnum) { return(Enum.ToObject(t, BloxStringSerializer.ToInt(data))); } if (t.IsArray) { return(BloxStringSerializer.DeserializeArray(data, t)); } if (t.IsGenericType) { if (t.GetGenericTypeDefinition() == typeof(List <>)) { return(BloxStringSerializer.DeserializeList(data, t)); } return(null); } if (BloxStringSerializer.readers.ContainsKey(t)) { return(BloxStringSerializer.readers[t](data)); } return(JsonUtility.FromJson(data, t)); } return(BloxMemberInfo.GetDefaultValue(t)); }
static BloxStringSerializer() { BloxStringSerializer.writers = new Dictionary <Type, Func <object, string> >(); BloxStringSerializer.readers = new Dictionary <Type, Func <string, object> >(); BloxStringSerializer.writers[typeof(bool)] = ((object value) => BloxStringSerializer.GetData((bool)value)); BloxStringSerializer.writers[typeof(byte)] = ((object value) => BloxStringSerializer.GetData((byte)value)); BloxStringSerializer.writers[typeof(sbyte)] = ((object value) => BloxStringSerializer.GetData((sbyte)value)); BloxStringSerializer.writers[typeof(char)] = ((object value) => BloxStringSerializer.GetData((char)value)); BloxStringSerializer.writers[typeof(int)] = ((object value) => BloxStringSerializer.GetData((int)value)); BloxStringSerializer.writers[typeof(uint)] = ((object value) => BloxStringSerializer.GetData((uint)value)); BloxStringSerializer.writers[typeof(short)] = ((object value) => BloxStringSerializer.GetData((short)value)); BloxStringSerializer.writers[typeof(ushort)] = ((object value) => BloxStringSerializer.GetData((ushort)value)); BloxStringSerializer.writers[typeof(long)] = ((object value) => BloxStringSerializer.GetData((long)value)); BloxStringSerializer.writers[typeof(ulong)] = ((object value) => BloxStringSerializer.GetData((ulong)value)); BloxStringSerializer.writers[typeof(float)] = ((object value) => BloxStringSerializer.GetData((float)value)); BloxStringSerializer.writers[typeof(double)] = ((object value) => BloxStringSerializer.GetData((double)value)); BloxStringSerializer.writers[typeof(decimal)] = ((object value) => BloxStringSerializer.GetData((decimal)value)); BloxStringSerializer.writers[typeof(string)] = ((object value) => BloxStringSerializer.GetData((string)value)); BloxStringSerializer.writers[typeof(Vector2)] = ((object value) => BloxStringSerializer.GetData((Vector2)value)); BloxStringSerializer.writers[typeof(Vector3)] = ((object value) => BloxStringSerializer.GetData((Vector3)value)); BloxStringSerializer.writers[typeof(Vector4)] = ((object value) => BloxStringSerializer.GetData((Vector4)value)); BloxStringSerializer.writers[typeof(Quaternion)] = ((object value) => BloxStringSerializer.GetData((Quaternion)value)); BloxStringSerializer.writers[typeof(Rect)] = ((object value) => BloxStringSerializer.GetData((Rect)value)); BloxStringSerializer.writers[typeof(Color)] = ((object value) => BloxStringSerializer.GetData((Color)value)); BloxStringSerializer.writers[typeof(Color32)] = ((object value) => BloxStringSerializer.GetData((Color32)value)); BloxStringSerializer.readers[typeof(bool)] = ((string data) => BloxStringSerializer.ToBool(data)); BloxStringSerializer.readers[typeof(byte)] = ((string data) => BloxStringSerializer.ToByte(data)); BloxStringSerializer.readers[typeof(sbyte)] = ((string data) => BloxStringSerializer.ToSByte(data)); BloxStringSerializer.readers[typeof(char)] = ((string data) => BloxStringSerializer.ToChar(data)); BloxStringSerializer.readers[typeof(int)] = ((string data) => BloxStringSerializer.ToInt(data)); BloxStringSerializer.readers[typeof(uint)] = ((string data) => BloxStringSerializer.ToUInt(data)); BloxStringSerializer.readers[typeof(short)] = ((string data) => BloxStringSerializer.ToShort(data)); BloxStringSerializer.readers[typeof(ushort)] = ((string data) => BloxStringSerializer.ToUShort(data)); BloxStringSerializer.readers[typeof(long)] = ((string data) => BloxStringSerializer.ToLong(data)); BloxStringSerializer.readers[typeof(ulong)] = ((string data) => BloxStringSerializer.ToULong(data)); BloxStringSerializer.readers[typeof(float)] = ((string data) => BloxStringSerializer.ToFloat(data)); BloxStringSerializer.readers[typeof(double)] = ((string data) => BloxStringSerializer.ToDouble(data)); BloxStringSerializer.readers[typeof(decimal)] = ((string data) => BloxStringSerializer.ToDecimal(data)); BloxStringSerializer.readers[typeof(string)] = ((string data) => BloxStringSerializer.ToString(data)); BloxStringSerializer.readers[typeof(Vector2)] = ((string data) => BloxStringSerializer.ToVector2(data)); BloxStringSerializer.readers[typeof(Vector3)] = ((string data) => BloxStringSerializer.ToVector3(data)); BloxStringSerializer.readers[typeof(Vector4)] = ((string data) => BloxStringSerializer.ToVector4(data)); BloxStringSerializer.readers[typeof(Quaternion)] = ((string data) => BloxStringSerializer.ToQuaternion(data)); BloxStringSerializer.readers[typeof(Rect)] = ((string data) => BloxStringSerializer.ToRect(data)); BloxStringSerializer.readers[typeof(Color)] = ((string data) => BloxStringSerializer.ToColor(data)); BloxStringSerializer.readers[typeof(Color32)] = ((string data) => BloxStringSerializer.ToColor32(data)); }