public static OrCondition SpecialDaysConditions(this SpecialDaysEnum SpecialDays)
        {
            var ret = new OrCondition();

            foreach (var Value in SpecialDays.GetValues())
            {
                if (SpecialDaysDictionary.ContainsKey(Value))
                {
                    ret.Conditions.Add(SpecialDaysDictionary[Value]);
                }
            }

            return(ret);
        }
        public static List <SpecialDaysEnum> GetValues(this SpecialDaysEnum Flags)
        {
            var ret = new List <SpecialDaysEnum>(Values.Length);

            foreach (var value in Values)
            {
                if (Flags.HasFlag((SpecialDaysEnum)value))
                {
                    ret.Add(value);
                }
            }



            return(ret);
        }
        public static bool Matches(this SpecialDaysEnum SpecialDays, DateTime Date)
        {
            var ret = false;

            foreach (var Value in SpecialDays.GetValues())
            {
                if (SpecialDaysDictionary.ContainsKey(Value))
                {
                    ret = SpecialDaysDictionary[Value].IsTrue(Date);
                    if (ret)
                    {
                        break;
                    }
                }
            }

            return(ret);
        }
 public static DateTimeFinder On(this DateTimeFinder DateFinder, SpecialDaysEnum SpecialDays) {
     DateFinder.Conditions<SpecialDaysCondition>().Add(SpecialDays);
     return DateFinder;
 }
 public void Remove(SpecialDaysEnum SpecialDays) {
     this.SpecialDays &= ~SpecialDays;
 }
 public void Add(SpecialDaysEnum SpecialDays) {
     this.SpecialDays |= SpecialDays;
 }
 public SpecialDaysCondition(SpecialDaysEnum SpecialDays) {
     this.SpecialDays = SpecialDays;
 }