Я новичок в C #, поэтому вполне возможно, что это довольно простое решение, но я не нашел ничего, что я бы посчитал элегантным. Если вам нужна какая-либо дополнительная информация или вы не знаете, о чем я спрашиваю, сообщите мне, и я свяжусь с вами, как только смогу.
В настоящее время существует способ создания правил проверки (для случаев, когда кто-то отправляет форму), например так:
new ValidationRuleInstance<DetailsPresenter>(
new IsValidDateRule<DetailsPresenter>(m => m.StartDate, "StartDate"),
new ValidationRuleInterpretation(Severity.Failure, "StartDateMustBeValid", "Must enter valid start date (dd/mm/yyyy)")
),
То, что я пытаюсь сделать, - это создать правило проверки, чтобы проверить, произошла ли дата, которую мне дали, в прошлом. Я устал от этого:
new ValidationRuleInstance<DetailsPresenter>(
new FailIfTrueRule<DetailsPresenter>(m => (DateTime.Parse(m.StartDate).AddDays(1) < DateTime.Now) ,"StartDate"),
new ValidationRuleInterpretation(Severity.Failure, "StartDateCannotBeInThePast", "Your start date cannot be in the past")
),
Это работает ... Большую часть времени (P.S. я добавляю один день, чтобы ввод текущей даты не вызывал ошибку).
Проблема в том, что, если кто-то отправляет строку, которую нельзя проанализировать в объекте даты и времени (например, 725/2011 вместо 25.07.2011), все это взорвется.
Я попытался использовать TryParse, однако он возвращает логическое значение, а не объект Time-Date.
Я собираюсь написать собственный метод для анализа String и всегда возвращать объект DateTime? Могу ли я поймать исключение и проигнорировать его? (уже существует отдельное правило для проверки правильности строки)