【发布时间】:2015-08-09 20:00:48
【问题描述】:
是否可以使用 FluentValidation 库针对集合进行验证。例如,检查新对象的开始/结束日期是否与同一类型集合中的日期重叠?如果没有,是否有人对执行此类验证有任何建议?
【问题讨论】:
标签: .net fluentvalidation
是否可以使用 FluentValidation 库针对集合进行验证。例如,检查新对象的开始/结束日期是否与同一类型集合中的日期重叠?如果没有,是否有人对执行此类验证有任何建议?
【问题讨论】:
标签: .net fluentvalidation
如果你想验证一组项目,它们不应该相互重叠——你可以使用我描述的方法here。当日期间隔相互重叠时,只需将 IEqualityComparer 实现更改为返回 true。
更新
如果您的集合与视图模型无关并放置在数据库中,例如,您可以使用返回业务逻辑结果的简单谓词(示例中使用的已知接口的构造函数注入):
public class ViewModelValidator
{
public ViewModelValidator(IIntervalService intervalService)
{
RuleFor(model => model.NewInterval)
.Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
}
}
【讨论】: