답변

2
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); 
     }); 

} 
} 
+0

싱글 톤을 지정할 때는주의해야합니다. 유효성 검사기가 데이터베이스를 호출하면 사용중인 연결이 그 동안 처리 될 수 있습니다. –

+0

@ vartan-arabyan, 내 모든 뷰 모델 (내 프로젝트에서 100 개 이상) 개인을 등록해야합니까? 이런! 제발 안되니? –