Можно ли дать enum dayofweek значение

У меня есть значение enum, представляющее диапазон дней недели (например, с воскресенья по пятницу), которые я представляю пользователю под понятным именем.

Я пытался придать этому значение

(SunTilTHur = DayOfWeek.Sunday + DayOfWeek.Monday + DayOfWeek.Tuesday)

но я получаю ошибку

Оператор switch содержит несколько случаев со значением метки

Код, который я пробовал:

public MyDayOfWeek Days { get; set; }
public string DaysFriendlyName => this.Days.ToFriendlyName();`
public enum MyDayOfWeek
{
    Sunday = DayOfWeek.Sunday,
    Monday = DayOfWeek.Monday,
    // ..

    SunTilFir = DayOfWeek.Sunday + DayOfWeek.Monday + DayOfWeek.Tuesday,//+...

    public static string ToFriendlyName(this MyDayOfWeek days)
    {
        switch (days)
        {
            case MyDayOfWeek.SunTilFir:
                    return @Resources.FormResources.SunTilFri;

Можно ли установить эти значения и как? Заранее спасибо.

1 ответ

Решение

Нет смысла оборачивать перечисление DayOfWeek в перечисление. Я хотел бы создать свой собственный вспомогательный класс и добавить методы, необходимые для удовлетворения диапазона проверок. Я использовал подход, аналогичный приведенному ниже, когда мне нужно было узнать, когда день был рабочим или выходным и т. Д. Для платежной системы... которая, казалось, работала.

public static class MyDayHelper
{
    public static bool IsWeekDay(DayOfWeek myday)
    {
        return myday >= DayOfWeek.Monday && myday <= DayOfWeek.Friday;
    }

    public static bool IsWeekEnd(DayOfWeek myday)
    {
        return myday == DayOfWeek.Saturday || myday == DayOfWeek.Sunday;
    }

    public static string ReturnWeekdays()
    {
        return string.Format("{0},{1},{2},{3},{4}", DayOfWeek.Monday, DayOfWeek.Tuesday,
            DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday);
    }

    public static string SunTilFri
    {
        get
        {
            return string.Format("{0},{1},{2},{3},{4},{5}", DayOfWeek.Sunday, DayOfWeek.Monday, DayOfWeek.Tuesday,
                DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday);
        }
    }

}

Очевидно, вы можете добавить соответствующие методы для вас... тогда вы можете проверить условия, основанные на том, каков ваш текущий день

var myDay = DateTime.Now.DayOfWeek;

            if (MyDayHelper.IsWeekDay(myDay))
            {
                //Do something
            }

            if (MyDayHelper.IsWeekEnd(myDay))
            {
                //Do something
            }

Надеюсь, что это поможет вам найти решение.

Другие вопросы по тегам