3

我对如何在NinjectFluentValidatior中使用工厂存有疑问。

这篇文章对我帮助很大,但我不明白如何使用工厂来实例化我的验证器

我还发现了一些其他类似的文章,但使用的是 StructureMap!

按照我执行的步骤

  1. 通过 nuget安装了NinjectFluentValidation
  2. 为工厂类安装了 Ninject.Web.Mvc.FluentValidation
  3. 现在?

安装 Ninject 时,他创建了NinjectMVC3.cs inApp_Start文件夹,因此我在方法中设置了我的依赖RegisterServices项:

kernel.Bind<IHumanValidator>().To<ReCaptchaValidate>().InRequestScope();

Global.asax中,Application_Start方法:

var ninjectValidatorFactory = new NinjectValidatorFactory(new StandardKernel());
ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(ninjectValidatorFactory));
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
FluentValidationModelValidatorProvider.Configure();

FluentValidator 我有:

public class RegisterCoupleValidator : AbstractValidator<RegisterCoupleModel>
{
    public RegisterCoupleValidator()
    {
        RuleFor(p => p.HumanValidator).SetValidator(new HumanValidator());
    }
}

HumanValidator.cs

public class HumanValidator : PropertyValidator
{
    [Inject]
    public IHumanValidator HumanValidate { get; set; }

    public HumanValidator(IHumanValidator hValidator)
        : this()
    {
        HumanValidate = hValidator;
    }

    public HumanValidator()
        : base("Texto digitado está incorreto. Por favor, tente novamente.")
    { }

    protected override bool IsValid(PropertyValidatorContext context)
    {
        return HumanValidate.IsValid();
    }
}

我的问题

  1. RegisterCoupleValidator工厂的课堂上,我如何没有验证器的实例?具体在new HumanValidator()

  2. HumanValidator类中,HumanValidate属性始终为空,为什么?


Obs1:我不想实例化 FluentValidator 的这些验证器,我希望 Ninject 使用这个工厂为我解决依赖关系。

Obs2:我不必访问 Ninject 内核,因为在几篇文章中我读到这将是一个反合作伙伴。

4

1 回答 1

1

看看这篇博文。这家伙正在使用 NuGet 包通过 Ninject 设置 FluentValidation。它非常简单且解释清楚。

于 2011-12-02T16:00:24.737 回答