Можно ли проверить соответствие коллекции с библиотекой FluentValidation. Например, проверяете, совпадают ли даты начала и окончания нового объекта с телами внутри коллекции того же типа? Если нет, есть ли у кого-нибудь рекомендации по выполнению этого типа проверки?.NET FluentValidation: проверка на коллекцию того же типа: совпадающие даты
1
A
ответ
2
Если вы хотите проверить коллекцию предметов, которые не должны пересекаться друг с другом, вы можете использовать описанный мной подход here. Просто измените реализацию IEqualityComparer
, чтобы вернуть true
, когда интервалы времени перекрывают друг друга.
UPDATE
Если ваша коллекция не связана с видом модели и помещены в БД, например, вы можете использовать простой предикат, возвращающих результат вашей бизнес-логики (конструктор инъекции известного интерфейса, используемого в примере):
public class ViewModelValidator
{
public ViewModelValidator(IIntervalService intervalService)
{
RuleFor(model => model.NewInterval)
.Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
}
}
Этот метод должен использовать подзаголовок? Я пытаюсь проверять существующую коллекцию, не связанную с объектом, который я проверяю. Например, перед тем, как добавить объект в коллекцию, я хочу убедиться, что он не перекрывается с существующими датами. Возможно, я мог бы перегрузить функцию Validate коллекцией, которую я пытаюсь проверить, а затем добавить правило, которое проверяет, перекрывает ли он ??? – Robbie
Спасибо за помощь, сэр. Мне удалось выполнить эту работу по моему сценарию. – Robbie