簡體   English   中英

FluentValidation DI將值傳遞給子驗證器

[英]FluentValidation DI Passing Values to Child Validators

我最近發現了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);
    }
}
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
                           )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM