流畅验证w/ MVC 5使用Ninject

本文关键字:使用 Ninject MVC 验证 | 更新日期: 2023-09-27 18:06:52

我需要添加"AssemblyScanner. exe "吗?findvalidatorsinassemblycontains"为每一个对象验证器我创建?有更简单的方法吗?

public class FluentValidatorModule : NinjectModule
{
    public override void Load()
    {
        AssemblyScanner.FindValidatorsInAssemblyContaining<OfficeModelValidator>()
            .ForEach(match => Bind(match.InterfaceType).To(match.ValidatorType));
    }
}

另外,当我执行submit时,我的NinjectValidatorFactory中的CreateInstance方法在一次回发期间被多次调用。为什么会这样呢?

public class NinjectValidatorFactory : ValidatorFactoryBase
{
    private IKernel _kernel;
    public NinjectValidatorFactory(IKernel kernel)
    {
        _kernel = kernel;
        AddBindings();
    }
    public override IValidator CreateInstance(Type validatorType)
    {
        var bindings = (IEnumerable<IBinding>)_kernel.GetBindings(validatorType);
        return bindings.Count() > 0 ? _kernel.Get(validatorType) as IValidator : null;
    }
    private void AddBindings()
    {
        _kernel.Bind<ILookupService>().To<LookupService>();
    }
}

流畅验证w/ MVC 5使用Ninject

AssemblyScanner的目的是扫描传入类型的程序集,允许您自动绑定所有这些类型。在您的示例中,OfficeModelValidator仅用于查找定义所有验证器的程序集。

参考来源:https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation/AssemblyScanner.cs