实用模式:内部域特定语言
2010-09-30 22:42:30 来源:WEB开发网首先,让我们看一个简单的示例。我当前的项目中涉及适用于重复出现事件和计划事件的可配置规则。最初,我们曾尝试创建小型内部 DSL 来配置这些事件(现在,我们正转向使用外部 DSL 方法)。这些规则主要依赖 TimeSpan 值来确定事件应该重复发生的频率、应该开始的时间和应该截止的时间。这可能类似于以下代码段:
x.Schedule(schedule =>
{
// These two properties are TimeSpan objects
schedule.RepeatEvery = new TimeSpan(2, 0, 0);
schedule.ExpiresIn = new TimeSpan(100, 0, 0, 0);
});
请特别注意“new TimeSpan(2, 0, 0)”和“new TimeSpan(100, 0, 0, 0)”。作为经验丰富的 .NET Framework 开发人员,您可能将这两段代码理解为“2 小时”和“100 天”,但您需要仔细想想,这样对吗?还是让我们更好地理解一下 TimeSpan 的定义吧:
x.Schedule(schedule =>
{
// These two properties are TimeSpan objects
schedule.RepeatEvery = 2.Hours();
schedule.ExpiresIn = 100.Days();
});
在上述示例中,我只对 integer 对象应用了一些可返回 TimeSpan 对象的扩展方法:
public static class DateTimeExtensions
{
public static TimeSpan Days(this int number)
{
return new TimeSpan(number, 0, 0, 0);
}
public static TimeSpan Seconds(this int number)
{
return new TimeSpan(0, 0, number);
}
}
更多精彩
赞助商链接