小编Col*_*ode的帖子

FluentValidation DI 将值传递给子验证器

我最近发现了 FluentValidator 并开始玩依赖注入。我似乎无法弄清楚如何使用当前的 DI 设置将值传递给子验证器。

我想从 InvoiceDetailsValidator 访问 Invoice.InvoiceNumber。

public class InvoiceValidator : AbstractValidator<Invoice>
{
    private readonly IDbContextFactory<DbContext> dbContextFactory;

    public InvoiceValidator(InvoiceDetailsValidator invoiceDetailsValidator, IDbContextFactory<DbContext> dbContextFactory)
    {
        ...

        RuleFor(x => x.InvoiceNumber)
            .Must(BeSomething)
            .WithMessage("Invoice number is required.");

        RuleForEach(x => x.InvoiceDetails)
            .SetValidator(invoiceDetailsValidator);
    }
}
Run Code Online (Sandbox Code Playgroud)
public class InvoiceDetailsValidator : AbstractValidator<InvoiceDetails>
{
    public InvoiceDetailsValidator(IDbContextFactory<DbContext> dbContextFactory)
    {
        ...

        RuleFor(x => x.InvoiceSection)
            .NotEmpty()
            .When(X => !string.IsNullOrEmpty( /* InvoiceNumber? */ ))
            .WithMessage("Invoice section is required.");
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

c# dependency-injection fluentvalidation

5
推荐指数
1
解决办法
328
查看次数