モデル:
public class ServiceHours
{
public int Id { get; set; }
...
public TimeSpan? Monday { get; set; }
public TimeSpan? Tuesday { get; set; }
public TimeSpan? Wednesday { get; set; }
public TimeSpan? Thursday { get; set; }
public TimeSpan? Friday { get; set; }
public TimeSpan? Saturday { get; set; }
public TimeSpan? Sunday { get; set; }
}
現在、「サービス時間」オブジェクトのリストを反復処理しています (オプションで、1 日または複数の曜日の開始時間を保持できます)。DayOfWeek
オブジェクトから列挙型に対応する値を動的に取得できるようにしたいと考えていDateTime
ます。
これは機能しますが、あまりエレガントではありません
var today = DateTime.Today.DayOfWeek;
foreach (var item in myItems)
{
var time = new TimeSpan?();
if (today == DayOfWeek.Monday)
time = item.Monday;
else if (today == DayOfWeek.Tuesday)
time = item.Tuesday;
else if (today == DayOfWeek.Wednesday)
time = item.Wednesday;
else if (today == DayOfWeek.Thursday)
time = item.Thursday;
else if (today == DayOfWeek.Friday)
time = item.Friday;
else if (today == DayOfWeek.Saturday)
time = item.Saturday;
else if (today == DayOfWeek.Sunday)
time = item.Sunday;
...
}
更新:当時はリフレクションを使用することになりましたが、これはそもそも非常に貧弱で素朴な設計であり、この質問はとにかくコードレビューに投稿する必要がありました-この質問は無視する必要があり、他の場合に備えてこの通知を追加するだけです一緒に来てください。ひどい質問にもかかわらず、助けようとした人々に感謝します!