Я настроил свой проект MVC для использования Fluent Validation и Castle Windsor, и все работает замечательно. Я использую собственную фабрику Validator Factory, чтобы учесть, что я также использую Entity Framework и должен учитывать динамические прокси, которые обертываются вокруг моих классов POCO. Вот мой CastleWindsorValidatorFactory:
public override IValidator CreateInstance( Type validatorType)
{
if( validatorType.GetGenericArguments()[0].Namespace.Contains( "DynamicProxies" ) )
{
validatorType = Type.GetType( String.Format( "{0}.{1}[[{2}]], {3}", validatorType.Namespace, validatorType.Name, validatorType.GetGenericArguments()[0].BaseType.AssemblyQualifiedName, validatorType.Assembly.FullName ) );
}
return ResolveType.Of( validatorType ) as IValidator;
}
Все работает хорошо, когда существует валидатор для модели, в которой действие контроллера является привязкой модели. Если для этой конкретной модели не существует валидатора, я получаю сообщение об ошибке, что Виндзор не может разрешить этот тип.
Но не всем моделям нужен валидатор. Я могу написать пустой, но это просто бесполезный код. Должен ли я просто поймать ошибку и игнорировать ее, когда пытаюсь разрешить валидатор? Есть ли что-то встроенное в замок, что поможет мне в этом? Что мне делать?