protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); // http://cdroulers.com/blog/2015/03/03/structuremap-3-and-asp-net-web-api-2/ //container = new Container(c => c.AddRegistry<DefaultRegistry>()); container = IoC.Initialize(); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), new StructureMapWebApiControllerActivator(container)); // http://www.amescode.com/category/structuremap/ // Allows setter injection in validation attributes. DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new StructuremapDataAnnotationsModelValidator(metadata, context, attribute, container)); // Allows setter injection in IValidatableObject viewModels. DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new StructureMapValidatableObjectAdapterFactory(metadata, context, container)); }
public void RegisterDefaultValidatableObjectAdapterFactoryGuardClauses() { // Factory cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory(null), "factory"); }
public void RegisterDefaultValidatableObjectAdapterFactoryGuardClauses() { // Factory cannot be null ExceptionHelper.ExpectArgumentNullException( () => DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory(null), "factory"); }
public void RegisterDefaultValidatableObjectAdapterFactory() { var oldFactory = DataAnnotationsModelValidatorProvider.DefaultValidatableFactory; try { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForType( () => null, typeof(MyValidatableClass) ); var context = new ControllerContext(); ModelValidator validator = new Mock <ModelValidator>(metadata, context).Object; DataAnnotationsValidatableObjectAdapterFactory factory = delegate { return(validator); }; DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory( factory ); // Act var result = new DataAnnotationsModelValidatorProvider() .GetValidators(metadata, context) .Single(); // Assert Assert.Same(validator, result); } finally { DataAnnotationsModelValidatorProvider.DefaultValidatableFactory = oldFactory; } }
/// <summary>Registers both <see cref="DryIocDataAnnotationsModelValidator"/> and /// <see cref="DryIocValidatableObjectAdapter"/> and provides the <paramref name="container"/> to use /// as <see cref="IServiceProvider"/> for resolving dependencies.</summary> /// <param name="container"><see cref="IServiceProvider"/> implementaion.</param> /// <returns>Returns source container for fluent access.</returns> public static IContainer WithDataAnnotationsValidator(this IContainer container) { var serviceProvider = new DryIocServiceProvider(container.ThrowIfNull()); DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new DryIocDataAnnotationsModelValidator(serviceProvider, metadata, context, attribute)); DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new DryIocValidatableObjectAdapter(serviceProvider, metadata, context)); return(container); }
/// <summary> /// Sets up Autofac to work with an MVC3 environment. /// Should be called from Application_Start /// </summary> /// <param name="d">A lambda that takes a container builder that then registers any dependencies within the application</param> /// <returns>The container so that the application can do any resolves necessary within Application_Start</returns> public IContainer RegisterDependencies(Dependencies d) { var builder = new ContainerBuilder(); RegisterWebbyStuff(builder); builder.RegisterModule <AuthModule>(); d(builder); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // Enable the flow forms model metadata provider ModelMetadataProviders.Current = new MetadataProvider(); // Enable the flow forms Validator Provider to fix MVC bug DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((m, c) => new CustomValidatableObjectAdapter(m, c)); return(container); }
protected virtual void RegisterModelValidators(IServiceProvider provider) { // Register Custom Model Validators that enables exposing the IOC Container as IServiceProvider through ValidationContext.GetService() (Validation Attribute etc) DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new DynamoDataAnnotationsModelValidator(provider, metadata, context, attribute)); DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new DynamoValidatableObjectAdapter(provider, metadata, context)); }