如何在表达式主体中实现switch case(或类似效果)?我正在创建一个Model对象(让我们称之为MyModel),其中一个字段是一个重复字段。重复发生的基础是当周的当天(周一的例子如下)。基本上我想将Weekly____设为真。我也在想,潜在的String.Format()会有一些东西可以支持它,但我无法让它工作。
public partial class SampleEntity
{
public int MyId { get; set; }
public string Description { get; set; }
public SampleEntity()
{
this.SuperCollection = new HashSet<UnitCompany>();
}
public virtual ICollection<AnyOtherEntity> SuperCollection { get; set; }
}
我尝试切换案例
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = true //what it would be on a Monday
}
};
我尝试使用String.Format()
var my = new MyModel
{
switch(DateTime.Today.DayOfWeek.ToString())
case "Monday":
Recurrence = new RecurrenceModel
{
WeeklyMonday = true
}
break;
default:
break;
};
答案 0 :(得分:2)
我猜你是C#的新手吗?
你需要做的是这样的事情
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = DateTime.Today.DayOfWeek == DayOfWeek.Monday
}
};
在您的两次尝试中,您实际上并未将该值分配给该属性。您的代码将无法编译,因为它无效C#。你不需要一个开关或一个字符串。格式来实现你所追求的目标。
在我的示例中,我将DateTime.Today.DayOfWeek == DayOfWeek.Monday
的结果分配给模型类的WeeklyMonday
属性
答案 1 :(得分:1)
我个人会这样做。
class RecurrenceModel
{
public RecurrenceModel()
{
GetType().GetProperty("Weekly" + DateTime.Today.DayOfWeek).SetValue(this, true);
}
public bool WeeklyMonday { get; set; }
public bool WeeklyTuesday { get; set; }
public bool WeeklyWednesday { get; set; }
public bool WeeklyThursday { get; set; }
public bool WeeklyFriday { get; set; }
public bool WeeklySaturday { get; set; }
public bool WeeklySunday { get; set; }
}
这样,无论什么时候实例化这个类,它都会自动设置当天为真,这就是你需要做的全部。
var my = new MyModel
{
Recurrence = new RecurrenceModel()
};