У меня есть пользовательский класс (если быть проще):
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<ValidationResult>();
var isValid = Validator.TryValidateObject(objectToValidate, ctx, errors, true);
if(!isValid) {
throw new AggregateException(
errors.Select((e)=>new ValidationException(e.ErrorMessage)
);
}
}
У меня действительно могут быть все мои ошибки.
Почему первый фрагмент кода работает должным образом? Я сделал что-то не так?
ТНХ