Return 基于类型的流畅验证器

Return fluent validator based on type

我是新手,正在将它集成到 .NET 核心解决方案中。我正在尝试使用静态映射器 return 根据传递的类型设置适当的验证器,但我 运行 遇到了问题。请参阅下面的简单示例:

public static class Mapper
{
    public static IValidator GetValidator<T>(T instance)
    {
        if (instance is CustomType)
        {
            return new CustomTypeValidator();
        }

        return new DefaultValidator();
    }

    public static IValidator<T> GetVlidator<T>(T instance)
    {
        if (instance is CustomType)
        {
            return new CustomTypeValidator();
        }

        return new DefaultValidator();
    }
}

第一个方法不可用,因为 IValidator 只提供一个接受 IValidationContext 的 Validate 方法。

第二种方法无法将具体验证器转换到接口上。

我已经查看了 DI 选项并且可以为每种类型注册具体的验证器,但是我仍然需要基于类型进行映射并且不能将具体的验证器转换为 IValidator< T>。

我是否应该只在一个单独的服务上执行验证,在该服务上我可以明确地执行基于类型的方法并且只是 return 结果?

FluentValidation 已经实现了您正在尝试做的事情。注入 IValidatorFactory 并从中获取验证器。

https://github.com/FluentValidation/FluentValidation/blob/main/src/FluentValidation/IValidatorFactory.cs