コード例 #1
0
        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");
 }
コード例 #3
0
 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;
            }
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
 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));
 }