我需要能够向我的 ValidatorFactory
提供 IComponentContext
来解析 FluentValidation 验证器。我有点卡住了。
验证器工厂
public class ValidatorFactory : ValidatorFactoryBase
{
private readonly IComponentContext context;
public ValidatorFactory(IComponentContext context)
{
this.context = context;
}
public override IValidator CreateInstance(Type validatorType)
{
return context.Resolve(validatorType) as IValidator;
}
}
如何提供上下文并注册 ValidatorFactory
FluentValidation.Mvc.FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = new ValidatorFactory());
最佳答案
您可以使其普遍适用于任何DependencyResolver
,而不是将其与Autofac紧密耦合。直接使用它:
public class ModelValidatorFactory : IValidatorFactory
{
public IValidator GetValidator(Type type)
{
if (type == null)
{
throw new ArgumentNullException("type");
}
return DependencyResolver.Current.GetService(typeof(IValidator<>).MakeGenericType(type)) as IValidator;
}
public IValidator<T> GetValidator<T>()
{
return DependencyResolver.Current.GetService<IValidator<T>>();
}
}
然后您可以使用任何类型的 DependencyResolver
注册您的验证器作为强类型 IValidator<T>
并且最终总会得到解决。
关于asp.net-mvc - FluentValidation Autofac ValidatorFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225140/