2015-08-09 4 views
1

Можно ли проверить соответствие коллекции с библиотекой FluentValidation. Например, проверяете, совпадают ли даты начала и окончания нового объекта с телами внутри коллекции того же типа? Если нет, есть ли у кого-нибудь рекомендации по выполнению этого типа проверки?.NET FluentValidation: проверка на коллекцию того же типа: совпадающие даты

ответ

2

Если вы хотите проверить коллекцию предметов, которые не должны пересекаться друг с другом, вы можете использовать описанный мной подход here. Просто измените реализацию IEqualityComparer, чтобы вернуть true, когда интервалы времени перекрывают друг друга.

UPDATE

Если ваша коллекция не связана с видом модели и помещены в БД, например, вы можете использовать простой предикат, возвращающих результат вашей бизнес-логики (конструктор инъекции известного интерфейса, используемого в примере):

public class ViewModelValidator 
{ 
    public ViewModelValidator(IIntervalService intervalService) 
    { 
     RuleFor(model => model.NewInterval) 
      .Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate)); 
    } 
} 
+0

Этот метод должен использовать подзаголовок? Я пытаюсь проверять существующую коллекцию, не связанную с объектом, который я проверяю. Например, перед тем, как добавить объект в коллекцию, я хочу убедиться, что он не перекрывается с существующими датами. Возможно, я мог бы перегрузить функцию Validate коллекцией, которую я пытаюсь проверить, а затем добавить правило, которое проверяет, перекрывает ли он ??? – Robbie

+0

Спасибо за помощь, сэр. Мне удалось выполнить эту работу по моему сценарию. – Robbie

 Смежные вопросы

  • Нет связанных вопросов^_^