/// <summary> /// برسی یکسان بودن نمونه جاری با نمونه ورودی /// </summary> /// <param name="obj">نمونه وردی</param> /// <returns>نتیجه برسی</returns> public override bool Equals(object obj) { bool areEqual = true; if (obj == null) { return(false); } if (!(obj is WorkSchedule)) { return(false); } WorkSchedule a = this; WorkSchedule b = obj as WorkSchedule; for (int i = 0; i < 24; i++) { areEqual &= a.m_daysInWeek[DayOfWeek.Saturday][i] == b.m_daysInWeek[DayOfWeek.Saturday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Sunday][i] == b.m_daysInWeek[DayOfWeek.Sunday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Monday][i] == b.m_daysInWeek[DayOfWeek.Monday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Tuesday][i] == b.m_daysInWeek[DayOfWeek.Tuesday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Wednesday][i] == b.m_daysInWeek[DayOfWeek.Wednesday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Thursday][i] == b.m_daysInWeek[DayOfWeek.Thursday][i]; areEqual &= a.m_daysInWeek[DayOfWeek.Friday][i] == b.m_daysInWeek[DayOfWeek.Friday][i]; } return(areEqual); }
/// <summary> /// تبدیل رشته ورودی به یک WorkSchedule /// </summary> /// <param name="s">رشته ورودی</param> /// <exception cref="InvalidFormatException" >فرمت نامعتبر است</exception> /// <exception cref="ArgumentNullException" >ورودی خالی داده شده</exception> /// <returns>workschedule</returns> public static WorkSchedule Parse(string s) { ///[Preparing for parse] if (!Validator.IsMatch(s, RegExPatterns.WorkSchedule, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { throw new InvalidFormatException(); } WorkSchedule workschedule = new WorkSchedule(); string[] daysInWeek = s.Split('-'); ///[Preparing for parse] int i = 0; ///[Converting each day value from hexadecimal to binary] Dictionary <DayOfWeek, BitArray> temp = new Dictionary <DayOfWeek, BitArray>(workschedule.m_daysInWeek); foreach (var weekDay in workschedule.m_daysInWeek.Keys) { string hoursInDay = Convert.ToString(Convert.ToInt32(daysInWeek[i], 16), 2).PadLeft(24, '0'); temp[weekDay] = convertStringToBitarray(hoursInDay); i++; } workschedule.m_daysInWeek = temp; return(workschedule); ///[Converting each day value from hexadecimal to binary] }
/// <summary> /// ایجاد یک کپی کامل از نمونه جاری /// </summary> /// <returns>نمونه کپی شده</returns> public object Clone() { return(WorkSchedule.Parse(this.serialize())); }