Ninject.MVC3 + FluentValidation + Factory Кто-нибудь использовал? - PullRequest
3 голосов
/ 13 октября 2011

Я сомневаюсь, как использовать фабрику в Ninject и FluentValidatior .

Эта статья мне очень помогла, но я не понимаю, как использовать фабрику для создания экземпляров моих валидаторов :

Я также нашел некоторые другие статьи , подобные , но с StructureMap!

Следуйте инструкциям, которые я выполнил

  1. Установлено Ninject и FluentValidation через nuget
  2. Установлено Ninject.Web.Mvc.FluentValidation для заводского класса
  3. А сейчас?

При установке 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();
    }
}

Мои вопросы

  1. В RegisterCoupleValidator классе с фабрикой как у меня нет экземпляров валидаторов? В частности, в new HumanValidator()

  2. В HumanValidator классе свойство HumanValidate всегда равно null, почему?


Obs1: Я не хочу создавать экземпляры этих валидаторов FluentValidator, я хочу, чтобы Ninject разрешил для меня зависимости с помощью этой фабрики.

Obs2: Мне не нужно было бы обращаться к ядру Ninject, поскольку в нескольких постах я читал, что это будет анти-партнером.

1 Ответ

1 голос
/ 02 декабря 2011

Посмотрите на это сообщение в блоге .Парень использует пакет NuGet для настройки FluentValidation с Ninject.Это довольно просто и хорошо объяснено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...