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 并从中获取验证器。
我是新手,正在将它集成到 .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 并从中获取验证器。