流畅验证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>();
}
}
AssemblyScanner
的目的是扫描传入类型的程序集,允许您自动绑定所有这些类型。在您的示例中,OfficeModelValidator
仅用于查找定义所有验证器的程序集。
参考来源:https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation/AssemblyScanner.cs