当前位置: 首页 > 编程语言 > C#

C#FluentValidationforClassHierarchySharing

时间:2023-04-10 13:50:15 C#

C#FluentValidationforClassHierarchy我有一个数据类层次结构publicclassBase{//要验证的字段}publicclassDerived1:Base{//更多要验证的字段}publicclassDerived2:Base{//要验证的更多字段}在不重复Base类字段规则的情况下,使用FluentValidation框架验证Derived1和Derived2的合适方法是什么?一种方法如下:publicclassBase{publicstringBaseName{get;放;}}publicclassDerived1:Base{publicstringDerived1Name{get;放;}}publicclassBaseValidator:AbstractValidatorwhereT:Base{publicBaseValidator(){RuleFor(b=>b.BaseName).NotNull();}}publicclassDerived1Validator:BaseValidator{publicDerived1Validator(){RuleFor(d=>d.Derived1Name).NotNull();所以首先创建基验证实现器,让它接受一个泛型类型参数,并指定泛型类型必须是基类型。为基类设置通用规则并继续。对于作为验证基类子类的任何验证器,您将从baseValidator继承这些验证器,其中T将是您的派生类类型。公共类Derived2Validator:AbstractValidator{publicDerived2Validator(){Include(newBaseValidator());包括(新的Derived2Validator());RuleFor(d=>d.Derived1Name).NotNull();Derived2Validator不需要inheritanceBaseValidator或Derived1Validator。Include方法将包含基本验证器的规则。我尝试了Include()方法,但它没有给我想要的结果,因为.netcore中swagger生成的模型没有显示任何变化。有效的是创建一个新类继承一个带有基类的validator以上是C#学习教程:C#FluentValidation用于类层次结构分享全部内容,如果对大家有用还需要详细了解一下C#学习教程,希望大家多多关注—//////BaseClassforentityvalidatorclassesthatspecifiesabasevalidatorclass//////TheTypebeingvalidated///Thevalidaterassignedtothebase正在验证的类型的类型//////添加验证规则集//////privatevoidAppendRules()whereTValidationRule:IEnumerable{varrules=(IEnumerable)Activator.CreateInstance();foreach(规则中的var规则){AddRule(rule);}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: