public ModelMetadataProvider(IModelMetadataRegistry registry)
            : base(registry)
        {
            if (registry == null) throw new ArgumentNullException("registry");

            _Registry = registry;
        }
Esempio n. 2
0
        public FluentConfigurationDisplayConvensionTests()
        {
            registry = new ModelMetadataRegistry();
            provider = new ExtendedModelMetadataProvider(registry);
            metadataConfiguration = new DummyDisplayModelConfiguration();

            registry.RegisterConfiguration(metadataConfiguration);

            LocalizationConventions.Enabled = true;
            LocalizationConventions.RequireConventionAttribute = false;
        }
        public static IDictionary<string, ModelMetadataItem> RegisterExtendedModelMetadata(
            Type modelType,
            ExtendedModelMetadataProvider metadataProvider,
            IModelMetadataRegistry extMetadataRegistry)
        {
            var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(
                () => Activator.CreateInstance(modelType),
                modelType);

            var extModelMetadataItem = CreateModelMetadataItem(modelMetadata, modelType.GetCustomAttributes());
            var extModelMetadataProperties = new Dictionary<string, ModelMetadataItem>();
            var modelTypeProperties = modelType.GetProperties();
            foreach (var property in modelMetadata.Properties)
            {
                var modelProperty = modelTypeProperties.Single(p => p.Name == property.PropertyName);
                extModelMetadataProperties.Add(property.PropertyName, CreateModelMetadataItem(property, modelProperty.GetCustomAttributes()));
            }

            extMetadataRegistry.RegisterModel(modelType, extModelMetadataItem);
            extMetadataRegistry.RegisterModelProperties(modelType, extModelMetadataProperties);

            return extMetadataRegistry.GetModelPropertiesMetadata(modelType);
        }
Esempio n. 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);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ExtendedModelMetadataProvider"/> class.
        /// </summary>
        /// <param name="registry">The registry.</param>
        public ExtendedModelMetadataProvider([NotNull] IModelMetadataRegistry registry)
        {
            Invariant.IsNotNull(registry, "registry");

            this.registry = registry;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ExtendedModelMetadataProvider"/> class.
        /// </summary>
        /// <param name="registry">The registry.</param>
        public ExtendedModelMetadataProvider(IModelMetadataRegistry registry)
        {
            Invariant.IsNotNull(registry, "registry");

            this.registry = registry;
        }
Esempio n. 7
0
 /// <summary>
 /// Creates <see cref="ModelMetadataRegistrar"/> instance
 /// </summary>
 /// <param name="registry">Holds all configations data</param>
 public ModelMetadataRegistrar(IModelMetadataRegistry registry)
 {
     Registry = registry;
 }
Esempio n. 8
0
 /// <summary>
 /// Allows to set custom <see cref="IModelMetadataRegistry"/> implementation
 /// </summary>
 public static void SetModelMetadataRegistry(IModelMetadataRegistry registry)
 {
     Registrar.Registry = registry;
 }
 public MvcExtensionsCoreMetadataProvider(IModelMetadataRegistry registry)
 {
     this.registry = registry;
 }
Esempio n. 10
0
 /// <summary>
 /// Creates <see cref="ModelMetadataRegistrar"/> instance
 /// </summary>
 /// <param name="registry">Holds all configations data</param>
 public ModelMetadataRegistrar(IModelMetadataRegistry registry)
 {
     Registry = registry;
 }
Esempio n. 11
0
 /// <summary>
 /// Allows to set custom <see cref="IModelMetadataRegistry"/> implementation
 /// </summary>
 public static void SetModelMetadataRegistry(IModelMetadataRegistry registry)
 {
     Registrar.Registry = registry;
 }
Esempio n. 12
0
        private static void SetupModelExtendedValidators(
            Type modelType,
            IModelMetadataRegistry extMetadataRegistry)
        {
            Throw.IfNullArgument(modelType, "model");

            var extendedMetadata = extMetadataRegistry.GetModelPropertiesMetadata(modelType);
            if (extendedMetadata == null)
            {
                _log.DebugFormat("Init fluent configuration for {0}", modelType.Name);
                var metadataProvider = ModelMetadataProviders.Current as ExtendedModelMetadataProvider;

                _convertedModelsCount++;
                extendedMetadata = FluentMetadataHelper.RegisterExtendedModelMetadata(modelType, metadataProvider, extMetadataRegistry);
            }

            _log.DebugFormat("Localize model {0}", modelType.Name);
            var localizer = new ValidationLocalizer(modelType, extendedMetadata);
            localizer.ProcessModel();
        }