Производные валидаторы, использующие FluentValidation, потерпят неудачу, если мы добавим несуществующий набор правил?C#

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

Сообщение Anonymous »

Предположим, у меня есть следующие модели предметной области в проекте C# .NET 6 EF Core:

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

public abstract class BaseItem
{
// Base class implementation...
}

public class FooItem : BaseItem
{
// Derived Class A implementation...
}

public class BarItem : BaseItem
{
// Derived Class B implementation...
}
Предположим, я использую FluentValidation для проверки экземпляров BaseItem:

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

public class BaseItemValidator : AbstractValidator
{
public BaseItemValidator()
{
// Rules for Base Item
}
}

public class FooItemValidator : AbstractValidator
{
public FooItemValidator()
{
Include(new BaseItemValidator());
RuleSet("FooRules", () =>
{
// Rules for derived FooItem instances
})
}
}

public class BarItemValidator : AbstractValidator
{
public BarItemValidator()
{
Include(new BaseItemValidator());
}
}
Если у меня есть общий сервис для экземпляров BaseItem, использующий производные валидаторы (внедренные зависимости), аналогичный следующему..

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

public class BarItemService
{
private IValidator _validator;

public BarItemService(IValidator validator)
{
_validator = validator;
}

public async Task AddItem(T item, CancellationToken token = default)
{
var result = await _validator.ValidateAsync(item, opt => opt.IncludeRuleSets("FooRules"), token);
if (!result.IsValid)
{
// Indicate the item is not valid
}

// Rest of the method...
}
}
.. произойдет ли сбой валидатора, если T — это BarItem, и мы попытаемся включить набор правил, специфичный для FooItem?


Подробнее здесь: https://stackoverflow.com/questions/792 ... le-set-tha
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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