Esempio n. 1
0
        /// <summary>
        /// Cria o metadado para o tipo informado.
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="attributes">Atributos da propriedade.</param>
        /// <param name="containerType">Tipo do container.</param>
        /// <param name="modelAccessor"></param>
        /// <param name="modelType">Tipo da model.</param>
        /// <param name="propertyName">Nome da propriedade.</param>
        /// <param name="propertySettings"></param>
        /// <returns></returns>
        private ModelMetadata CreateMetadata(MetadataStateble owner, IEnumerable <Attribute> attributes, Type containerType, Func <object> modelAccessor, Type modelType, string propertyName, Colosoft.Validation.IPropertySettingsInfo propertySettings)
        {
            var validationManager = Colosoft.Validation.ValidationManager.Instance;
            var stateItem         = validationManager.CreatePropertyState(owner, propertyName, propertySettings, null, System.Globalization.CultureInfo.CurrentUICulture);
            var metadata          = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

            metadata.AdditionalValues.Add("StateItem", stateItem);
            metadata.IsRequired  = stateItem.IsRequired;
            metadata.IsReadOnly  = stateItem.IsReadOnly;
            metadata.DisplayName = stateItem.Label != null?stateItem.Label.Title.FormatOrNull() : null;

            metadata.Description = stateItem.Label != null?stateItem.Label.Description.FormatOrNull() : null;

            return(metadata);
        }
Esempio n. 2
0
        /// <summary>
        /// Recupera os metadados para a propriedade.
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="modelAccessor"></param>
        /// <param name="containerType"></param>
        /// <param name="propertyDescriptor"></param>
        /// <param name="propertySettings"></param>
        /// <returns></returns>
        private ModelMetadata GetMetadataForProperty(MetadataStateble owner, Func <object> modelAccessor, Type containerType, System.ComponentModel.PropertyDescriptor propertyDescriptor, Colosoft.Validation.IPropertySettingsInfo propertySettings)
        {
            IEnumerable <Attribute> attributes = this.FilterAttributes(containerType, propertyDescriptor, propertyDescriptor.Attributes.Cast <Attribute>());
            ModelMetadata           result     = CreateMetadata(owner, attributes, containerType, modelAccessor, propertyDescriptor.PropertyType, propertyDescriptor.Name, propertySettings);

            return(result);
        }