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