是否可以使用FluentValidation库验证集合。例如,检查新对象的开始/结束日期是否与同一类型的集合内的日期重叠?如果没有,是否有人有任何关于执行此类验证的建议?
答案 0 :(得分:2)
如果要验证不应相互重叠的项目集合,可以使用我描述的here方法。当日期间隔相互重叠时,只需将IEqualityComparer
实施更改为返回true
。
<强>更新强>
例如,如果您的集合与视图模型无关并放置在DB中,则可以使用返回业务逻辑结果的简单谓词(示例中使用的已知接口的构造函数注入):
public class ViewModelValidator
{
public ViewModelValidator(IIntervalService intervalService)
{
RuleFor(model => model.NewInterval)
.Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
}
}