using Fantasy.Entitas.Interface; namespace Fantasy; public sealed class MailDestroySystem : DestroySystem { protected override void Destroy(Mail self) { self.OwnerId = 0; self.Title = null; self.Content = null; self.CreateTime = 0; self.ExpireTime = 0; self.Money = 0; self.MailState = MailState.None; self.MailType = MailType.None; foreach (var selfItem in self.Items) { selfItem.Dispose(); } self.Items.Clear(); } } public static class MailSystem { public static MailSimplifyInfo ToMailSimplifyInfo(this Mail self) { return new MailSimplifyInfo() { MailId = self.Id, OwnerId = self.OwnerId, Title = self.Title, Content = self.Content, CreateTime = self.CreateTime, ExpireTime = self.ExpireTime, MailState = (int)self.MailState, MailType = (int)self.MailType }; } public static MailInfo ToMailInfo(this Mail self) { var mailInfo = new MailInfo() { MailId = self.Id, OwnerId = self.OwnerId, Title = self.Title, Content = self.Content, CreateTime = self.CreateTime, ExpireTime = self.ExpireTime, Money = self.Money, MailState = (int)self.MailState, MailType = (int)self.MailType }; foreach (var selfItem in self.Items) { mailInfo.Items.Add(new ItemInfo() { Name = selfItem.Name, }); } return mailInfo; } }