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