public SerializableActor Serialize(bool withDebugInfo) { bool? isActive = null; if (this.IsActive) { isActive = true; } var item = new SerializableActor { ActorNr = this.ActorNr, UserId = this.UserId, IsActive = isActive, Nickname = this.Nickname, DeactivationTime = this.DeactivationTime, }; if (this.Properties.Count > 0) { var actorBinState = new Dictionary<byte, object> { { BinrayPropertiesId, this.Properties.AsDictionary().ToDictionary(prop => prop.Key, prop => prop.Value.Value) } }; item.Binary = Serializer.SerializeBase64(actorBinState); if (withDebugInfo) { item.DEBUG_BINARY = actorBinState; } } return item; }
public static SerializableActor ToSerializableActor(this Dictionary<string, object> d) { var res = new SerializableActor { ActorNr = (int) d[Actor.ActorNrKey], UserId = d.ContainsKey(Actor.UserIdKey) ? (string) d[Actor.UserIdKey] : string.Empty, Nickname = d.ContainsKey(Actor.NicknameKey) ? (string) d[Actor.NicknameKey] : string.Empty, Binary = d.ContainsKey(Actor.BinaryKey) ? (string) d[Actor.BinaryKey] : string.Empty }; if (d.ContainsKey("DEBUG_BINARY")) { var debug_bin = d["DEBUG_BINARY"] as Dictionary<string, object>; if (debug_bin != null) { res.DEBUG_BINARY = new Dictionary<byte, object>(); foreach (var entry in debug_bin) { var key = Convert.ToByte(entry.Key); res.DEBUG_BINARY.Add(key, entry.Value); } } } return res; }
public static Actor Deserialize(SerializableActor a) { IDictionary properties = null; if (!string.IsNullOrEmpty(a.Binary)) { var dic = (IDictionary)Serializer.DeserializeBase64(a.Binary); properties = (IDictionary)dic[BinrayPropertiesId]; } return new Actor(a.ActorNr, a.UserId, properties, a.DeactivationTime); }