using System; using System.ComponentModel.DataAnnotations; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace Kruzya.TelegramBot.Core.Data { public class BotUserValue { [Key] public Guid BotUserValueId { get; set; } public BotUser BotUser { get; set; } public string Name { get; set; } public byte[] Value { get { var fmt = new BinaryFormatter(); using var memStream = new MemoryStream(); fmt.Serialize(memStream, data); return memStream.ToArray(); } set { var fmt = new BinaryFormatter(); using var memStream = new MemoryStream(); memStream.Write(value); memStream.Position = 0; data = fmt.Deserialize(memStream); } } [NonSerialized] public object data; public T GetValue() => (T) data; public void SetValue(T value) => data = value; } }