我是否需要为我创建的每个对象验证器添加“AssemblyScanner.FindValidatorsInAssemblyContaining”?有没有更简单的方法?
public class FluentValidatorModule : NinjectModule
{
public override void Load()
{
AssemblyScanner.FindValidatorsInAssemblyContaining<OfficeModelValidator>()
.ForEach(match => Bind(match.InterfaceType).To(match.ValidatorType));
}
}
此外,当我执行提交时,我的 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
的目的是扫描传入类型的程序集,允许您自动绑定(bind)所有这些程序集。在您的示例中,OfficeModelValidator
仅用于查找定义所有验证器的程序集。
关于c# - 使用 Ninject 的 MVC 5 流畅验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069118/