gpt4 book ai didi

asp.net-mvc - FluentValidation Autofac ValidatorFactory

转载 作者:行者123 更新时间:2023-12-01 17:16:31 28 4
gpt4 key购买 nike

我需要能够向我的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com