我对如何在Ninject和FluentValidatior中使用工厂表示怀疑。
This article帮助了我很多,但我不明白如何使用工厂来实例化验证器:
我还发现了一些其他文章like this但是使用了StructureMap!
安装Ninject时,他在NinjectMVC3.cs
文件夹中创建了App_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();
}
}
在工厂的RegisterCoupleValidator
课程中,我怎么没有验证器的实例?
具体在new HumanValidator()
在HumanValidator
类中,HumanValidate
属性始终为null,为什么?
Obs1:我不想实例化FluentValidator的这些验证器,我希望Ninject使用这个工厂为我解析依赖关系。
Obs2:我不必访问Ninject内核,因为在几篇帖子中我读到这将是一个反伙伴。