2011-01-18 14 views
1

内のDateTimeオブジェクトを使用して、私はこの列挙持っている:は、列挙型

public enum TimePeriod 
{ 
    Day = DateTime.Now.AddDays(-1), 
    Week = DateTime.Now.AddDays(-7), 
    Month = DateTime.Now.AddMonths(-1), 
    AllTime = DateTime.Now 
} 

をしかし、私は、列挙型指定された日付を取得する方法

(DateTime)timePeriod 

を行うカント? C#ので

+0

私はこれまでのようにenumを使って考えたことはありません。 (Un)幸いにも、それはそのように使うことはできません。 – Tx3

答えて

8

は、enumのデフォルトの基になる型にのみようにintshortuintなど基本データ型をサポートしている残念ながらintある、と。したがって、enumの中にDateTimesを格納することはできません。

public static class TimePeriod 
{ 
    public static DateTime Day{ get{return DateTime.Now.AddDays(-1);}}, 
    public static DateTime Week{ get{return DateTime.Now.AddDays(-7);}}, 
    public static DateTime Month{ get{return DateTime.Now.AddMonths(-1);}}, 
    public static DateTime AllTime{ get{return DateTime.Now;}}, 
} 

をそして、このようにそれを使用します:

myDateTime = TimePeriod.Month; 
+0

私は/ News/Index/Week /などのURLでこれを使っていましたが、静的クラスを使って "Week"という単語を翻訳する方法はありますか? – raklos

+0

プロパティの実際の名前を取得する場合は、Reflectionを使用してプロパティを取得する必要があります。 –

+0

これらの値のうちの1つの入力パラメータを強制的に静的型にすることは可能でしょうか? –

0

もちろんDateTimesは、あなたがこのようなenumのようにそれを作るのではなく、必要に公開する静的プロパティと静的クラスを作ることができます

これには列挙型ではなくクラスを使用する必要があります。

1

Oyvindの回答に加えて、 Enums値は定数でなく変数でなければなりません。