Можно ли дать 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
}
Надеюсь, что это поможет вам найти решение.