Iva*_*tin 22 fluentvalidation c#-4.0
我用了Fluent Validator.但有时我需要创建一个规则层次结构.例如:
[Validator(typeof(UserValidation))]
public class UserViewModel
{
public string FirstName;
public string LastName;
}
public class UserValidation : AbstractValidator<UserViewModel>
{
public UserValidation()
{
this.RuleFor(x => x.FirstName).NotNull();
this.RuleFor(x => x.FirstName).NotEmpty();
this.RuleFor(x => x.LastName).NotNull();
this.RuleFor(x => x.LastName).NotEmpty();
}
}
public class RootViewModel : UserViewModel
{
public string MiddleName;
}
Run Code Online (Sandbox Code Playgroud)
我想从UserValidation继承验证规则到RootValidation.但是这段代码不起作用:
public class RootViewModelValidation:UserValidation<RootViewModel>
{
public RootViewModelValidation()
{
this.RuleFor(x => x.MiddleName).NotNull();
this.RuleFor(x => x.MiddleName).NotEmpty();
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用FluentValidation继承验证类?
小智 33
要解决此问题,您必须将UserValidation类更改为generic.见下面的代码.
public class UserValidation<T> : AbstractValidator<T> where T : UserViewModel
{
public UserValidation()
{
this.RuleFor(x => x.FirstName).NotNull();
this.RuleFor(x => x.FirstName).NotEmpty();
this.RuleFor(x => x.LastName).NotNull();
this.RuleFor(x => x.LastName).NotEmpty();
}
}
[Validator(typeof(UserValidation<UserViewModel>))]
public class UserViewModel
{
public string FirstName;
public string LastName;
}
public class RootViewModelValidation : UserValidation<RootViewModel>
{
public RootViewModelValidation()
{
this.RuleFor(x => x.MiddleName).NotNull();
this.RuleFor(x => x.MiddleName).NotEmpty();
}
}
[Validator(typeof(RootViewModelValidation))]
public class RootViewModel : UserViewModel
{
public string MiddleName;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3315 次 |
| 最近记录: |