如何制作它以便我可以使用来自 App.Config 的数据

How to make it so I can use the data from App.Config

到目前为止我已经写了这篇文章,但我似乎可以理解它,所以操作员命令是正确的。我想在星期一和星期五之间写它,执行上述代码。

DayOfWeek day = DateTime.Now.DayOfWeek;
            TimeSpan now = DateTime.Now.TimeOfDay;
            string FromDate = string.Empty;
            TimeSpan FromTime = new TimeSpan();
            TimeSpan ToTime = new TimeSpan();

            foreach (var key in applicationSettings.AllKeys)
            {
                if (key == "FromDate")
                {
                  FromDate = applicationSettings[key];
                }

if ((day >= FromDate) && (now > FromTime) && (now < ToTime))
{
    // execute code here
}

我无法让 FromDate 正常工作。 FromTime、ToTime 是 8:00 AM 和 17:00.

这也算是一种方式。可能效率不高。不过可以考虑。 您可能可以添加一个新变量并将您的 FromDate 转换为枚举并将其保存在那里。

            DayOfWeek FromDateEnum;

           if (key == "FromDate")
            {
              FromDate = applicationSettings[key];
              Enum.TryParse<DayOfWeek>(FromDate, out FromDateEnum);
            }

并更改您的 if 条件以使用枚举而不是字符串

          if ((day >= FromDateEnum ) && (now > FromTime) && (now < ToTime))
            {
                // execute code here
            }

除此之外,您还可以使用 FromDateEnum 轻松管理以与 DayOfWeek 枚举值进行比较。

回答问题的 "between Monday and Friday" 部分:
DayOfWeek 是一周的枚举表示,从周日到周六。

您可以将其存储在您的配置中,索引可能是表示那一天的最简单方式:

<add key="FromDay" value="1" /> <!--Monday-->
<add key="ToDay" value="5" />   <!--Friday-->

现在一个简单的转换和比较就会给你你需要的结果:

var confRead = new System.Configuration.AppSettingsReader();
var fromDay= (int)confRead.GetValue("FromDay", typeof(int));            
var toDay = (int)confRead.GetValue("ToDay", typeof(int));

var result = IsValidDay(DateTime.Now, fromDay, toDay);

private bool IsValidDay(DateTime day, int fromDay = 1, int toDay = 5)
{
    var testDay = (int)day.DayOfWeek;
    return (fromDay > testDay && testDay > toDay);
}

您现在可以应用相同的逻辑来查找我们是否在 08:00 和 17:00 之间。使用 TimeSpan 和 'TimeOfDay'