FluentValidation:驗證繼承相同基類的對象列表

我有一組繼承相同基類的類。每個具體類都有自己的類用于驗證。另一個類有一個基類集合,我想用具體的驗證器驗證每個元素。

在網頁上爬行時,我在FluentValidation GitHub問題跟蹤器上發現了一個問題。解決方案是使用ChildValidatorAdaptor。不幸的是,他們更改了類,使其使用通用方法。通過此更改,PropertyValue在IValidationContext上也不再可用,因為IVvalidationContext將允許檢索每個條目的當前類型。

想用*.SetValidator(new解決它…)。When(…)或ChildRules。但從我的理解來看,這兩種方式都無助于我。

有沒有提示需要什么才能在版本11中實現這種驗證行為?

public abstract class Base { ... }

public class A : Base {}
public class AValidator : AbstractValidator<A> { ... }

public class B : Base {}
public class BValidator : AbstractValidator<B> { ... }

public class SomeOther
{
   List<Base> Elements { get; set; } = new List<Base>();
}
public class SomeOtherValidator : AbstractValidator<SomeOther>
{
   public SomeOtherValidator()
   {
      // use AValidator or BValidator dependend on the concrete type of each element
      RuleForEach(x => x.Elements).SetValidator(??);
   }
}
? 最佳回答:

關于繼承驗證的FluentValidation文檔有以下示例:

public class ContactRequestValidator : AbstractValidator<ContactRequest>
{
  public ContactRequestValidator()
  {

    RuleForEach(x => x.Contacts).SetInheritanceValidator(v => 
    {
      v.Add<Organisation>(new OrganisationValidator());
      v.Add<Person>(new PersonValidator());
    });
  }
}

用于實現公共IContact接口的類PersonOrganisation

根據文檔,這也適用于抽象基類:

從FluentValidation 9.2開始,如果您的對象包含一個基類或接口屬性,您可以為各個子類/實現器設置特定的子驗證器。

適合你的情況

public class SomeOtherValidator : AbstractValidator<SomeOther>
{
   public SomeOtherValidator()
   {
      // use AValidator or BValidator dependend on the concrete type of each element
      RuleForEach(x => x.Elements).SetInheritanceValidator(v =>
      {
           v.Add<A>(new AValidator());
           v.Add<B>(new BValidator());    
      });
   }
}

至少我是這樣讀那份文件的。

主站蜘蛛池模板: 麻豆va一区二区三区久久浪| 亚洲天堂一区二区| 精品永久久福利一区二区| 精品国产a∨无码一区二区三区| 日韩精品电影一区亚洲| 亚洲码欧美码一区二区三区| 久草新视频一区二区三区| 亚洲一区二区精品视频| 成人精品一区二区三区校园激情| 久久久无码一区二区三区| 中文字幕在线无码一区二区三区 | 91精品福利一区二区三区野战| 日本一区二区三区精品国产| 海角国精产品一区一区三区糖心| 亚洲视频一区二区在线观看| 久久人妻内射无码一区三区| 亚洲视频一区二区| 无码日韩人妻AV一区免费l| 波多野结衣在线观看一区| 亚洲AV无码一区二区乱子仑| 亚洲变态另类一区二区三区| 69久久精品无码一区二区| 亚洲蜜芽在线精品一区| 日本一区二区在线播放| 香蕉久久av一区二区三区| 国产精品女同一区二区| 久久久精品人妻一区亚美研究所| 国产午夜精品一区二区三区| 久久青草国产精品一区| 日韩免费无码视频一区二区三区 | 国产精品一区二区av| 麻豆精品久久久一区二区| 亚洲国产精品一区第二页| 亚洲色偷偷偷网站色偷一区| 亚洲av无码一区二区三区在线播放 | 无码夜色一区二区三区| 国产日韩精品一区二区三区 | 国产日韩高清一区二区三区 | 精品国产AⅤ一区二区三区4区| 国产不卡视频一区二区三区| 亚洲无线码一区二区三区|