public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            var concreteTypes = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(assembly => !assembly.GlobalAssemblyCache).ConcreteTypes();

            IList<IModelMetadataConfiguration> configurations = new List<IModelMetadataConfiguration>();

            concreteTypes.Where(type => typeof (IModelMetadataConfiguration).IsAssignableFrom(type))
                         .Each(type =>
                             {
                                 container.Register(Component.For(type).LifestyleTransient());
                                 configurations.Add((IModelMetadataConfiguration) container.Resolve(type));
                             });

            container.Register(Component.For<IModelMetadataRegistry>().ImplementedBy<ModelMetadataRegistry>().LifestyleSingleton());

            var registry = container.Resolve<IModelMetadataRegistry>();

            configurations.Each(configuration => registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations));

            IList<ModelValidatorProvider> validatorProviders = new List<ModelValidatorProvider>(ModelValidatorProviders.Providers);
            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            var compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);
        }
Пример #2
0
        /// <summary>
        /// Registers metadata provider
        /// </summary>
        /// <returns></returns>
        public void RegisterMetadataProviders()
        {
            IEnumerable<IModelMetadataConfiguration> configurations = dependencyResolver.GetServices<IModelMetadataConfiguration>();

            var registry = dependencyResolver.GetService<IModelMetadataRegistry>();

            configurations.Each(configuration => registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations));

            IList<ModelValidatorProvider> validatorProviders = new List<ModelValidatorProvider>(ModelValidatorProviders.Providers);
            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            var compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);
        }
Пример #3
0
        /// <summary>
        /// Registers metadata provider and model metadata configuration classes
        /// </summary>
        public void Register()
        {
            var configurations = getConfigurations != null?getConfigurations().Where(t => t != null) : Enumerable.Empty <IModelMetadataConfiguration>();

            foreach (var configuration in configurations)
            {
                Registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations);
            }

            IList <ModelValidatorProvider> validatorProviders =
                new List <ModelValidatorProvider>(ModelValidatorProviders.Providers);

            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            var compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(Registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);
        }
Пример #4
0
        /// <summary>
        /// Executes the task. Returns continuation of the next task(s) in the chain.
        /// </summary>
        /// <returns></returns>
        public override TaskContinuation Execute()
        {
            IEnumerable<Type> concreteTypes = Container.GetService<IBuildManager>().ConcreteTypes;

            concreteTypes.Where(type => KnownTypes.ModelMetadataConfigurationType.IsAssignableFrom(type))
                         .Each(type => Container.RegisterAsTransient(KnownTypes.ModelMetadataConfigurationType, type));

            IEnumerable<IModelMetadataConfiguration> configurations = Container.GetServices<IModelMetadataConfiguration>();

            IModelMetadataRegistry registry = Container.GetService<IModelMetadataRegistry>();

            configurations.Each(configuration => registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations));

            IList<ModelValidatorProvider> validatorProviders = new List<ModelValidatorProvider>(ModelValidatorProviders.Providers);
            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            CompositeModelValidatorProvider compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);

            return TaskContinuation.Continue;
        }
Пример #5
0
        /// <summary>
        /// Executes the task. Returns continuation of the next task(s) in the chain.
        /// </summary>
        /// <returns></returns>
        public override TaskContinuation Execute()
        {
            IEnumerable <Type> concreteTypes = Container.GetService <IBuildManager>().ConcreteTypes;

            concreteTypes.Where(type => KnownTypes.ModelMetadataConfigurationType.IsAssignableFrom(type))
            .Each(type => Container.RegisterAsTransient(KnownTypes.ModelMetadataConfigurationType, type));

            IEnumerable <IModelMetadataConfiguration> configurations = Container.GetServices <IModelMetadataConfiguration>();

            IModelMetadataRegistry registry = Container.GetService <IModelMetadataRegistry>();

            configurations.Each(configuration => registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations));

            IList <ModelValidatorProvider> validatorProviders = new List <ModelValidatorProvider>(ModelValidatorProviders.Providers);

            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            CompositeModelValidatorProvider compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);

            return(TaskContinuation.Continue);
        }
Пример #6
0
        /// <summary>
        /// Registers metadata provider and model metadata configuration classes
        /// </summary>
        public void Register()
        {
            var configurations = getConfigurations != null ? getConfigurations().Where(t => t != null) : Enumerable.Empty<IModelMetadataConfiguration>();

            foreach (var configuration in configurations)
            {
                Registry.RegisterConfiguration(configuration);
            }

            IList<ModelValidatorProvider> validatorProviders =
                new List<ModelValidatorProvider>(ModelValidatorProviders.Providers);
            validatorProviders.Insert(0, new ExtendedModelValidatorProvider());
            var compositeModelValidatorProvider = new CompositeModelValidatorProvider(validatorProviders.ToArray());

            ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(Registry);
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(compositeModelValidatorProvider);
        }