gpt4 book ai didi

c# - FluentValidation DI 将值传递给子验证器

转载 作者:行者123 更新时间:2023-11-30 18:11:32 29 4
gpt4 key购买 nike

我最近发现了 FluentValidator 并开始研究依赖注入(inject)。我似乎无法弄清楚如何使用当前的 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);
}
}
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.");
}
}

如有任何帮助,我们将不胜感激。

最佳答案

更改 Paarent 验证器构造函数
    public InvoiceValidator(InvoiceDetailsValidator invoiceDetailsValidator, 
IDbContextFactory<DbContext> dbContextFactory
)

    public InvoiceValidator(IValidator<InvoiceDetails> invoiceDetailsValidator, 
IDbContextFactory<DbContext> dbContextFactory
)

关于c# - FluentValidation DI 将值传递给子验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57916636/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com