我已经将我的 MVC 项目设置为使用 Fluent Validation 和 Castle Windsor,并且一切运行良好。我正在使用自定义验证器工厂,以考虑到我也在使用实体框架,并且必须考虑到包裹在我的 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;
}
当控制器操作是模型绑定的模型存在验证器时,一切都运行良好。如果该特定模型不存在验证器,则会收到 Windsor 无法解析该类型的错误。
但是,并非所有模型都需要验证器。我可以写一个空的,但这只是无用的代码。当我尝试解析验证器时,我是否应该抓住错误并忽略它?Castle 中是否有内置的东西可以帮助我解决这个问题?我该怎么办?