В проекте им MVC работает Я использую Fluent Validation реализовать некоторую логику проверки и я определил мои UnityValidatorFactory
следующим образом:Fluent Validation и Ioc контейнер: CreateInstance называется много раз в вебе-приложении MVC
public class UnityValidatorFactory : ValidatorFactoryBase
{
private readonly IUnityContainer _container;
public UnityValidatorFactory(IUnityContainer container)
{
_container = container;
}
public override IValidator CreateInstance(Type validatorType)
{
if (_container.IsRegistered(validatorType))
{
return _container.Resolve(validatorType) as IValidator;
}
return null;
}
}
В глобальном. asax я зарегистрировать свой класс как это:
var validationFactory = new UnityValidatorFactory(container);
var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(validationFactory);
Я определил мой валидатор для моего ViewModel:
public class ServiceRequestViewModelValidator : AbstractValidator<ServiceRequestViewModel>
{
public ServiceRequestViewModelValidator()
{
// many validation rules here...
}
}
я зарегистрировал свой валидатор в единстве:
container.RegisterType<IValidator<ServiceRequestViewModel>, ServiceRequestViewModelValidator>();
Когда я отправляю данные действия с аргументом типа ServiceRequestViewModel метода CreateInstance называется так много раз и конструктора ServiceRequestViewModelValidator а. Поскольку правила validatin, которые я реализовал, занимают много времени, я не хочу, чтобы они выполнялись более одного раза. Более того, я не понимаю, почему они звонят более одного раза.