AmidamaruZXC

Untitled

Jun 6th, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace MessageLib
  9. {
  10.     [System.Runtime.Serialization.DataContract]
  11.     public class Message
  12.     {
  13.         private string _content;
  14.  
  15.         public Message(string content, DateTime sendDate)
  16.         {
  17.             _content = content;
  18.             SendDate = sendDate;
  19.         }
  20.  
  21.         [DataMember]
  22.         public string Content
  23.         {
  24.             set
  25.             {
  26.                 if (value.Length > 80 || value.Length <= 0)
  27.                     throw new ArgumentException("Длина строки не может превышать 80 символов!");
  28.             }
  29.             get =>
  30.                 _content;
  31.         }
  32.  
  33.         [DataMember]
  34.         public DateTime SendDate
  35.         {
  36.             get;
  37.             set;
  38.         }
  39.  
  40.         [DataMember]
  41.         public DateTime ReceiveDate
  42.         {
  43.             get
  44.             {
  45.                 return SendDate.AddSeconds(1);
  46.             }
  47.             private set
  48.             {
  49.  
  50.             }
  51.         }
  52.  
  53.         public override string ToString() =>
  54.             $"Mail: Content = {Content}, SendDate = {SendDate}, ReceiveDate = {ReceiveDate}";
  55.  
  56.  
  57.     }
  58. }
  59.  
  60.  
  61. using System;
  62. using System.Collections.Generic;
  63. using System.Linq;
  64. using System.Runtime.Serialization;
  65. using System.Text;
  66. using System.Threading.Tasks;
  67.  
  68. namespace MessageLib
  69. {
  70.     [DataContract]
  71.     public class Dmessage : Message
  72.     {
  73.  
  74.         public Dmessage(string content, DateTime sendDate, int hours) :
  75.             base(content, sendDate) =>
  76.             Hours = hours;
  77.  
  78.         [DataMember]
  79.         public int Hours
  80.         {
  81.             get;
  82.             set;
  83.         }
  84.  
  85.         [DataMember]
  86.         public new DateTime ReceiveDate
  87.         {
  88.             get
  89.             {
  90.                 return SendDate.AddHours(-Hours);
  91.             }
  92.             private set
  93.             {
  94.  
  95.             }
  96.         }
  97.  
  98.         public override string ToString() =>
  99.             $"D-Message: Content = {Content}, SendDate = {SendDate}, Hours = {Hours}, " +
  100.             $"ReceiveData = {ReceiveDate}";
  101.     }
  102. }
  103.  
  104. using System;
  105. using System.Collections;
  106. using System.Collections.Generic;
  107. using System.Linq;
  108. using System.Runtime.Serialization;
  109. using System.Text;
  110. using System.Threading.Tasks;
  111.  
  112. namespace MessageLib
  113. {
  114.     [DataContract]
  115.     public class MessageBox : IEnumerable<Message>
  116.     {
  117.         [DataMember]
  118.         private List<Message> _messages;
  119.  
  120.         public MessageBox() =>
  121.             _messages = new List<Message>();
  122.  
  123.         public void ReceiveMail(Message msg) =>
  124.             _messages.Add(msg);
  125.  
  126.  
  127.         public void Add(Message msg) =>
  128.             ReceiveMail(msg);
  129.  
  130.         public IEnumerator<Message> GetEnumerator()
  131.         {
  132.             return _messages.OrderBy(x => x.ReceiveDate).GetEnumerator();
  133.         }
  134.  
  135.         IEnumerator IEnumerable.GetEnumerator()
  136.         {
  137.             return _messages.OrderBy(x => x.ReceiveDate).GetEnumerator();
  138.         }
  139.     }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment