У меня есть собственный класс (простой):
using System;
using System.ComponentModel.DataAnnotations;
public class MyClass {
[Required]
public string Title { get; set;}
[Required]
public string Description { get; set;}
}
Я хочу проверить этот объект и получить исключение со всем, что не правильно.
Если я это сделаю:
void Validate() {
var objectToValidate = new MyClass { }; // Both properties are null at this time
var ctx = new ValidationContext(objectToValidate, null, null);
Validator.ValidateObject(objectToValidate, ctx, true);
}
Выдается исключение ValidationException, но оно показывает только первую ошибку, даже я указываю true для параметра validateAllProperties
.
Если я немного реорганизую свой код:
void Validate() {
var objectToValidate = new MyClass { }; // Both properties are null at this time
var ctx = new ValidationContext(objectToValidate, null, null);
var errors = new List<ValidationErrors>();
var isValid = Validator.TryValidateObject(objectToValidate, ctx, errors, true);
if(!isValid) {
throw new AggregateException(
errors.Select((e)=>new ValidationException(e.ErrorMessage)
);
}
}
У меня могут быть все мои ошибки.
Почему первый фрагмент кода работает так, как ожидалось? Я сделал что-то неправильно?
ТНХ