[英]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.