using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ChatRoomServer.Main.Entities { using System.IO; class MessageUser { public MessageUser(string username, string nickname) { UserName = username; NickName = nickname; } public string UserName { get; set; } public string NickName { get; set; } } class MessageItem { public MessageItem() { Time = DateTime.Now; } public MessageItem( SystemMessageType? sysMsgType = null, UserMessageType? userMsgType = null, string action = null, bool success = true, MessageUser fromUser = null, string content = null ) : this() { SystemMessage = sysMsgType != null; SysMsgType = sysMsgType ?? SystemMessageType.Unknown; UserMsgType = userMsgType ?? UserMessageType.Unknown; Action = action; Success = success; From = fromUser; Content = content; if (sysMsgType.HasValue && From == null) { From = new MessageUser("*system", "系统"); } } public long Id { get; set; } public string Action { get; set; } public bool Success { get; set; } public DateTime Time { get; set; } public bool SystemMessage { get; set; } public SystemMessageType SysMsgType { get; set; } public UserMessageType UserMsgType { get; set; } public string Content { get; set; } public string Color { get; set; } public string[] Images { get; set; } public MessageUser From { get; set; } public MessageUser[] ToUsers { get; set; } public byte[] ToBuffer() => _buffer ?? (_buffer = EntityUtility.ToBuffer(this)); public static MessageItem Decode(byte[] buffer) => EntityUtility.FromBuffer(buffer); byte[] _buffer; } }