2017-01-30 5 views
-1

フレンドリーな名前でユーザーに提示する曜日の範囲(日曜日から金曜日など)を表すenum値を持っています。enum dayofweekの値を与えることは有効です

私はコードを私はそれを価値

(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; 

この値と設定方法は設定できますか?前もって感謝します。

+3

[フラグ属性](http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c)をご覧ください。 – krillgar

+1

enumを 'DayOfWeek'から独立させる必要があります。なぜなら、後者は、フラグ列挙型ではインクリメントしないインクリメンタル値を使うからです。 – poke

+0

@krillgar、私はそれが正しいことを理解している場合、フラグを使用してクエリを(E.G.火曜日)の値を取得するシステムを作成しません。ちょうど文字列。 –

答えて

2

DayOfWeek列挙型を列挙型にラップすることに意味はありません。あなた自身のヘルパークラスを作成し、チェックの範囲を満たすために必要なメソッドを追加します。私は、支払いシステムのために1日が仕事の日か週末なのかを知る必要があるときに、以下に同様のアプローチを使用しました。あなたは明らかにあなたのための関連メソッドを追加することができます

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

、ありがとう、それはそれを行う方法のように見えます。 –

関連する問題