using System; using System.Collections; using System.Collections.Generic; using LeanCloud.Storage.Internal.Codec; namespace LeanCloud.Storage.Internal.Object { internal class LCObjectData { internal string ClassName { get; set; } internal string ObjectId { get; set; } internal DateTime CreatedAt { get; set; } internal DateTime UpdatedAt { get; set; } internal Dictionary CustomPropertyDict; internal LCObjectData() { CustomPropertyDict = new Dictionary(); } internal static LCObjectData Decode(IDictionary dict) { if (dict == null) { return null; } LCObjectData objectData = new LCObjectData(); foreach (DictionaryEntry kv in dict) { string key = kv.Key.ToString(); object value = kv.Value; if (key == "className") { objectData.ClassName = value.ToString(); } else if (key == "objectId") { objectData.ObjectId = value.ToString(); } else if (key == "createdAt" && DateTime.TryParse(value.ToString(), out DateTime createdAt)) { objectData.CreatedAt = createdAt; } else if (key == "updatedAt" && DateTime.TryParse(value.ToString(), out DateTime updatedAt)) { objectData.UpdatedAt = updatedAt; } else { objectData.CustomPropertyDict[key] = LCDecoder.Decode(value); } } return objectData; } internal static Dictionary Encode(LCObjectData objectData) { if (objectData == null) { return null; } Dictionary dict = new Dictionary { { "className", objectData.ClassName }, { "objectId", objectData.ObjectId }, { "createdAt", objectData.CreatedAt }, { "updatedAt", objectData.UpdatedAt }, }; if (objectData.CustomPropertyDict != null) { foreach (KeyValuePair kv in objectData.CustomPropertyDict) { string key = kv.Key; object value = kv.Value; dict[key] = LCEncoder.Encode(value); } } return dict; } } }