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

时间:2018-02-20 08:18:22

标签: c# app-config

到目前为止,我已经写过这个,但我似乎可以得到它,所以操作员命令正确。我想写它,所以当它是在周一和周五之间的Excecute代码。

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和17:00。

2 个答案:

答案 0 :(得分:2)

在星期一和星期五之间回答&#34;&#34; 部分问题:
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和&#39; TimeOfDay&#39;

答案 1 :(得分:0)

这可以被视为一种方式。可能效率不高。但可以考虑。 您可以添加一个新变量并将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 Enum值进行比较。