【问题标题】:Fluent Validation and Structuremap AssemblyScanner implementation. ASP.NET MVC3Fluent Validation 和 Structuremap AssemblyScanner 实现。 ASP.NET MVC3
【发布时间】:2011-08-11 23:07:21
【问题描述】:

如何使用结构映射和流利的验证程序集扫描器将验证器绑定到 nhibernate 实体? sr

【问题讨论】:

    标签: c# asp.net-mvc fluent-nhibernate structuremap fluentvalidation


    【解决方案1】:
    ObjectFactory.Configure(cfg => cfg.AddRegistry(new MyRegistry()));
    ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
    
    //Configure FV to use StructureMap
    var factory = new StructureMapValidatorFactory();
    
    //Tell MVC to use FV for validation
    ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(factory));
    DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
    
    public class StructureMapValidatorFactory : ValidatorFactoryBase
    {
    public override IValidator CreateInstance(Type validatorType)
    {
        return ObjectFactory.TryGetInstance(validatorType) as IValidator;
    }
    }
    
    
    public class MyRegistry : Registry
    {
    public MyRegistry()
    {
        AssemblyScanner.FindValidatorsInAssemblyContaining<LiveReport.Domain.Validation.PersonValidator>()
          .ForEach(result =>
          {
              For(result.InterfaceType)
                 .Singleton()
                 .Use(result.ValidatorType);
          });
    
    }
    }
    

    【讨论】:

    • 在指定 Singleton 时要小心。如果验证器调用数据库,那么它使用的连接可能会同时被丢弃。
    • @vartan-arabyan,我应该注册我所有的视图模型(我的项目中超过 100 个)个人吗?天哪!请拒绝?
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多