簡體   English   中英

如何創建基礎 FluentValidation

[英]How to create a base FluentValidation

namespace Test
{

    public class A
    {
        public string Name { get; set; }
    }    
    public class AValidator : AbstractValidator<A>
    {
        public AValidator()
        {
            RuleFor(t => t.Name)
                .NotEmpty()
                .MinimumLength(10)
                .MaximumLength(20);
        }
    }

    public class B
    {
        public string Name { get; set; }
    }    
    public class BValidator : AbstractValidator<B>
    {
        public BValidator()
        {
            RuleFor(t => t.Name)
                .NotEmpty()
                .MinimumLength(10)
                .MaximumLength(20);
        }
    }
}

試圖創建一個像這樣的共同點:

namespace Test2
{
    public interface IPerson
    {
        public string Name { get; set; }
    }

    public abstract class CommonABValidators<T> : 
                           AbstractValidator<T> where T : IPerson
    {
        protected CommonABValidators()
        {
            RuleFor(x => x.Name).NotNull();
        }
    }
}

但是通過調用

public class AValidator : CommonABValidators<A>

它應該可以轉換為IPerson ,但在我的情況下,我在A中有不同的道具不能轉換為IPerson

任何想法如何將常用參數提取到常用驗證器中?

你所做的看起來是正確的。 只要確保您的 class A實現IPerson接口,驗證器就會開始工作。

您至少可以嘗試的另一個選項是Include rules 在這里你可以找到官方文檔: https://docs.fluentvalidation.net/en/latest/including-rules.html

您只需要調用Include(new CommonValidator()); 並且通用規則將自動包含在內,而無需繼承通用基類型。

暫無
暫無

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

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