我有几个实现名为 IPageable 的接口的 ServiceStack 请求 DTO。我有一个验证器,可以验证此接口上的两个属性。我想我最终会为每个请求类型拥有一个验证器,但我试图避免在所有请求中重复与 IPageable 相关的验证逻辑。
public class PageableValidator : AbstractValidator<IPageable>
{
public PageableValidator()
{
RuleFor(req => req.Page)
.GreaterThanOrEqualTo(1);
RuleFor(req => req.PageSize)
.GreaterThanOrEqualTo(1)
.When(req => req.Page > 1);
}
}
我对此的一些想法包括:
看来我不能只让 container.RegisterValidators() 将其应用于所有实现 IPageable 的请求类型,但这是我的第一个想法。
我可以在所有请求定义上指定多个
<Validator>
属性,以便特定于请求的验证器和我的 IPageable 验证器都运行吗?我可以在验证器注册时指定所有实现 IPageable 的类型,我的 IPageable 验证器应该运行吗?
我可以为特定于请求的验证器编写一个基类,该验证器从我的 PageableValidator 获取规则并包含/运行它们吗?
我可以通过子类化来完成某种工作AbstractValidator<T> where T : IPageable
,但我希望能够以更多面向方面的方式对多个接口进行验证。