Можно ли объединить результаты проверки на основе атрибутов с результатами пользовательской проверки?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли объединить результаты проверки на основе атрибутов с результатами пользовательской проверки?

Сообщение Anonymous »

При наличии нескольких недопустимых свойств, украшенных аннотациями к данным и проверенных с помощью специальной проверки, я хочу получить результаты проверки для всех недопустимых свойств, а не только для первого недопустимого свойства (как это получается с помощью следующего кода).

Код: Выделить всё

using MiniValidation;
using System.ComponentModel.DataAnnotations;

var widget = new Widget { Name = "A", Age = 0 };

if (!MiniValidator.TryValidate(widget, out var errors))
{
foreach (var entry in errors)
{
Console.WriteLine($"  {entry.Key}:");
foreach (var error in entry.Value)
{
Console.WriteLine($"  - {error}");
}
}
}

class Widget : IValidatableObject
{
[Required, MinLength(3)]
public string Name { get; set; } = null!;
public int Age { get; set; }
public IEnumerable Validate(ValidationContext ctx)
{
if (Age < 10)
yield return new ValidationResult("Age cannot be less than 10.", [nameof(Age)]);
}
}
Изображение
Я не хочу заменять проверки на основе атрибутов пользовательской проверкой.

Код: Выделить всё

class Widget : IValidatableObject
{
public string Name { get; set; } = null!;
public int Age { get; set; }
public IEnumerable Validate(ValidationContext ctx)
{
if (Name is null)
yield return new ValidationResult("Name must be specified.", [nameof(Name)]);
if (Name?.Length < 3)
yield return new ValidationResult("Name must contain at least 3 characters.", [nameof(Name)]);

if (Age < 10)
yield return new ValidationResult("Age cannot be less than 10.", [nameof(Age)]);
}
}
Изображение



Подробнее здесь: https://stackoverflow.com/questions/788 ... ones-for-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»