我有一个现有的 asp.net (c#) 应用程序。我需要为用户提供一种创建灵活规则的方法,以计算给定雇用日期和注册日期的生效日期。
可能使用的一些规则示例:
- 雇用日期或入学日期中的较晚者
- 雇用日期 + 90 天
- 注册日期后的第一个月的第一天
- 如果注册日期在当月 15 日之前,则生效日期为下个月 1 日。如果是 15 日或之后,则为之后的一个月 1 日。
我从一些偏移字段(日偏移、月偏移等)开始,但是当我遇到新的需求时,我开始意识到当前的方法不够灵活。
我想做的是允许最终用户定义一个函数,该函数返回给定两个参数(hiredate、enrollmentdate)的日期,并将该函数存储在数据库中。当我需要计算有效日期时,我会将此函数从数据库中拉出,执行它并传入参数以获取我的有效日期。
我需要(我认为)是允许创建此功能的领域特定语言(DSL)。它的语法必须允许轻松操作日期。
我正在寻找符合我要求的 DSL 建议。如果我的 DSL 策略不正确,请推荐另一条路径。谢谢你。