c# - 使用 Ninject 的 MVC 5 流畅验证

标签 c# asp.net-mvc ninject fluentvalidation

我是否需要为我创建的每个对象验证器添加“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 仅用于查找定义所有验证器的程序集。

引用来源:https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation/AssemblyScanner.cs

关于c# - 使用 Ninject 的 MVC 5 流畅验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069118/

相关文章:

asp.net-mvc - 如何在 MVC 应用程序中将 HTTP 重定向到 HTTPS (IIS7.5)

c# - 在 Provider Ninject 中检索自定义绑定(bind)参数

c# - Ninject:将多种类型绑定(bind)到同一个单例实例

c# - 在 WinForms 的 ReportViewer 中切换数据源

c# - 从数学表达式创建二叉树

c# - 如何在 ASP.NET Core 应用程序中显示来自 Azure Blob 存储帐户的图像?

c# - 与 Ninject 一起绞火

c# - 是否可以为 Func<T1,T2,....> 参数的部分提供智能感知的 xml 注释?

c# - 有没有办法编写独立于系统的MVC应用程序?

asp.net-mvc - 在微前端管理用户 session