簡體   English   中英

如何在表達式塊中進行切換大小寫或字符串格式

[英]How to do a switch case or string format within an expression block

如何在表達式主體中實現切換大小寫(或類似效果)? 我正在創建一個Model對象(稱之為MyModel),並且其中一個字段是重復字段。 重復周期基於一周中的當前日期(下面是星期一的示例)。 基本上我想將Weekly____設置為true。 我還認為,潛在的String.Format()可以提供一些支持,但是我無法使其正常工作。

var my = new MyModel
{
    Recurrence = new RecurrenceModel
    {
        WeeklyMonday = true //what it would be on a Monday
    }
};

我對開關盒的嘗試

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屬性

simonlchilds是對的。 最好的方法是在類的構造函數中,評估當日的值以將哪個屬性設置為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; }
}

這樣,無論何時實例化此類,它都會自動將日期設置為true,這就是您需要做的所有事情。

var my = new MyModel
{
    Recurrence = new RecurrenceModel()
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM