2017-01-30 14 views
-1

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

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

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

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

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

Код I проверено:

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; 

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

+3

Вы должны взглянуть на атрибут [Флаг] (http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c). – krillgar

+1

Вам нужно будет сделать свой enum независимым от 'DayOfWeek', поскольку последний использует инкрементные значения, которые не будут использоваться для перечислений флагов. – poke

+0

@krillgar, если я правильно понимаю, использование флага не заставит систему получить значение (E.G. Tuesday) в запросе. Просто строка. –

ответ

2

Нет смысла обматывать перечисление 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 
      } 

Надеется, что поможет вам придумать решением.

+0

, спасибо, да, это похоже на способ сделать это. –

Смежные вопросы