如何在表达式块中执行 switch case 或字符串格式
How to do a switch case or string format within an expression block
如何在表达式主体中实现 switch case(或类似效果)?我正在创建一个模型对象(我们称之为 MyModel),其中一个字段是重复字段。重复基于一周中的当前日期(下面是星期一的示例)。基本上我想将 Weekly____ 设置为 true。我也在想 String.Format() 可能会有一些东西来支持这个,但我无法让它工作。
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = true //what it would be on a Monday
}
};
我对 switch case 的尝试
var my = new MyModel
{
switch(DateTime.Today.DayOfWeek.ToString())
case "Monday":
Recurrence = new RecurrenceModel
{
WeeklyMonday = true
}
break;
default:
break;
};
我对 String.Format()
的尝试
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
String.Format("Weekly{0}", DateTime.Today.DayOfWeek.ToString()) = true
}
};
我猜您是 C# 的新手?
你需要做的是这样的
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = DateTime.Today.DayOfWeek == DayOfWeek.Monday
}
};
在您的两次尝试中,您实际上并未将值分配给 属性。您的代码将无法编译,因为它不是有效的 C#。您不需要开关或 string.Format 来实现您想要的。
在我的示例中,我将 DateTime.Today.DayOfWeek == DayOfWeek.Monday
的结果分配给模型 WeeklyMonday
属性 class
simonlchilds 是对的。执行此操作的最佳方法是在 class 的构造函数中评估当前日期的值以将 属性 设置为 true。
我个人会做这样的事情。
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; }
}
这样,无论什么时候 class 被实例化,它都会自动将哪一天设置为 true,这就是您需要做的所有事情。
var my = new MyModel
{
Recurrence = new RecurrenceModel()
};
如何在表达式主体中实现 switch case(或类似效果)?我正在创建一个模型对象(我们称之为 MyModel),其中一个字段是重复字段。重复基于一周中的当前日期(下面是星期一的示例)。基本上我想将 Weekly____ 设置为 true。我也在想 String.Format() 可能会有一些东西来支持这个,但我无法让它工作。
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = true //what it would be on a Monday
}
};
我对 switch case 的尝试
var my = new MyModel
{
switch(DateTime.Today.DayOfWeek.ToString())
case "Monday":
Recurrence = new RecurrenceModel
{
WeeklyMonday = true
}
break;
default:
break;
};
我对 String.Format()
的尝试var my = new MyModel
{
Recurrence = new RecurrenceModel
{
String.Format("Weekly{0}", DateTime.Today.DayOfWeek.ToString()) = true
}
};
我猜您是 C# 的新手?
你需要做的是这样的
var my = new MyModel
{
Recurrence = new RecurrenceModel
{
WeeklyMonday = DateTime.Today.DayOfWeek == DayOfWeek.Monday
}
};
在您的两次尝试中,您实际上并未将值分配给 属性。您的代码将无法编译,因为它不是有效的 C#。您不需要开关或 string.Format 来实现您想要的。
在我的示例中,我将 DateTime.Today.DayOfWeek == DayOfWeek.Monday
的结果分配给模型 WeeklyMonday
属性 class
simonlchilds 是对的。执行此操作的最佳方法是在 class 的构造函数中评估当前日期的值以将 属性 设置为 true。
我个人会做这样的事情。
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; }
}
这样,无论什么时候 class 被实例化,它都会自动将哪一天设置为 true,这就是您需要做的所有事情。
var my = new MyModel
{
Recurrence = new RecurrenceModel()
};