public static IEnumerable <EnumMemberInfo> GetEnumSource(Type enumType, bool useUnderlyingEnumValue = true, IValueConverter nameConverter = null, bool splitNames = false, EnumMembersSortMode sortMode = EnumMembersSortMode.Default, Func <string, bool, string> getKnownImageUriCallback = null, bool showImage = true, bool showName = true) { var result = enumType.GetFields(BindingFlags.Static | BindingFlags.Public) .Where(field => DataAnnotationsAttributeHelper.GetAutoGenerateField(field)) .Select(field => { Enum value = (Enum)field.GetValue(null); string name = GetEnumName(field, value, nameConverter, splitNames); var imageInfo = GetImageInfo(MetadataHelper.GetAttribute <ImageAttribute>(field), MetadataHelper.GetAttribute <DXImageAttribute>(field), null, getKnownImageUriCallback); ImageSource image = (imageInfo.Item1 ?? imageInfo.Item2).With(x => (ImageSource) new ImageSourceConverter().ConvertFrom(x)); return(new EnumMemberInfo(name, DataAnnotationsAttributeHelper.GetFieldDescription(field), useUnderlyingEnumValue ? GetUnderlyingEnumValue(value) : value, image, showImage, showName)); }); switch (sortMode) { case EnumMembersSortMode.DisplayName: result = result.OrderBy(x => x.Name); break; case EnumMembersSortMode.DisplayNameDescending: result = result.OrderByDescending(x => x.Name); break; case EnumMembersSortMode.DisplayNameLength: result = result.OrderBy(x => x.Name.Length); break; case EnumMembersSortMode.DisplayNameLengthDescending: result = result.OrderByDescending(x => x.Name.Length); break; } return(result.ToArray()); }
public static PropertyValidator FromAttributes(IEnumerable attributes, string propertyName) { try { var displayName = DataAnnotationsAttributeHelper.GetDisplayName(attributes.OfType <Attribute>()) ?? propertyName; var validationAttributes = attributes != null?attributes.OfType <ValidationAttribute>().ToArray() : new ValidationAttribute[0]; var dxValidationAttributes = attributes != null?attributes.OfType <DXValidationAttribute>().ToArray() : new DXValidationAttribute[0]; return(validationAttributes.Any() || dxValidationAttributes.Any() ? new PropertyValidator(validationAttributes, dxValidationAttributes, propertyName, displayName) : null); } catch (TypeAccessException) { return(null); } }
static IAttributesProvider GetExternalAndFluentAPIAttrbutesCore(Type componentType) { IEnumerable <IAttributesProvider> result = new IAttributesProvider[0]; foreach (var type in GetHierarchy(componentType)) { IEnumerable <Type> metadataClassType = DataAnnotationsAttributeHelper.GetMetadataClassType(type) .Return(x => new[] { x }, () => Enumerable.Empty <Type>()); IEnumerable <Type> externalMetadataClassTypes = GetMetadataTypes(MetadataLocator.Default, type); result = result.Concat(metadataClassType.Concat(externalMetadataClassTypes).GetProviders(type)); GetFluentAPIAttributesFromStaticMethod(type, type).Do(x => result = result.Concat(new[] { x })); } return(CompositeMetadataAttributesProvider.Create(result)); }
static string GetEnumName(FieldInfo field, Enum value, IValueConverter nameConverter, bool splitNames) { if (nameConverter != null) { return(nameConverter.Convert(value, typeof(string), null, CultureInfo.CurrentCulture) as string); } string displayName = DataAnnotationsAttributeHelper.GetFieldDisplayName(field); string name = displayName ?? TypeDescriptor.GetConverter(value.GetType()).ConvertTo(value, typeof(string)) as string; if (splitNames && displayName == null) { return(SplitStringHelper.SplitPascalCaseString(name)); } return(name); }
public static IEnumerable <EnumMemberInfo> GetEnumSource(Type enumType, bool useUnderlyingEnumValue = true, IValueConverter nameConverter = null, bool splitNames = false, EnumMembersSortMode sortMode = EnumMembersSortMode.Default, Func <string, bool, string> getKnownImageUriCallback = null, bool showImage = true, bool showName = true, Func <string, ImageSource> getSvgImageSource = null, Size?imageSize = null) { if (enumType == null || !enumType.IsEnum) { return(Enumerable.Empty <EnumMemberInfo>()); } Func <string, ImageSource> getImageSource = uri => (ImageSource) new ImageSourceConverter().ConvertFrom(uri); var result = enumType.GetFields(BindingFlags.Static | BindingFlags.Public) .Where(field => DataAnnotationsAttributeHelper.GetAutoGenerateField(field)) .Select(field => { Enum value = (Enum)field.GetValue(null); string name = GetEnumName(field, value, nameConverter, splitNames); var imageInfo = GetImageInfo(MetadataHelper.GetAttribute <ImageAttribute>(field), MetadataHelper.GetAttribute <DXImageAttribute>(field), null, getKnownImageUriCallback); string imageUri = ViewModelBase.IsInDesignMode ? null : (imageInfo.Item1 ?? imageInfo.Item2); Func <ImageSource> getImage = () => imageUri.With(TryGetImageSource(CanCreateSvgImageSource(getSvgImageSource, imageUri) ? getSvgImageSource : getImageSource)); return(new EnumMemberInfo(name, DataAnnotationsAttributeHelper.GetFieldDescription(field), useUnderlyingEnumValue ? GetUnderlyingEnumValue(value) : value, showImage, showName, getImage, imageSize, DataAnnotationsAttributeHelper.GetFieldOrder(field))); }); switch (sortMode) { case EnumMembersSortMode.DisplayName: result = result.OrderBy(x => x.Name); break; case EnumMembersSortMode.DisplayNameDescending: result = result.OrderByDescending(x => x.Name); break; case EnumMembersSortMode.DisplayNameLength: result = result.OrderBy(x => x.Name.Length); break; case EnumMembersSortMode.DisplayNameLengthDescending: result = result.OrderByDescending(x => x.Name.Length); break; } return(result.OrderBy(x => (x.Order != null) ? x.Order : DefaultDisplayOrder).ToArray()); }
static IAttributesProvider GetExtenalAndFluentAPIAttrbutesCore(Type componentType) { IEnumerable <IAttributesProvider> result = new IAttributesProvider[0]; while (componentType != null) { Type metadataClassType = DataAnnotationsAttributeHelper.GetMetadataClassType(componentType); if (metadataClassType != null) { result = result.Concat(GetAllMetadataAttributes(metadataClassType, componentType)); } Type[] externalMetadataClassTypes = MetadataLocator.Default.With(x => x.GetMetadataTypes(GetTypeOrGenericTypeDefinition(componentType))); if (externalMetadataClassTypes != null) { foreach (var externalMetadataClassType in externalMetadataClassTypes) { result = result.Concat(GetAllMetadataAttributes(externalMetadataClassType, componentType)); } } GetFluentAPIAttributesFromStaticMethod(componentType, componentType).Do(x => result = result.Concat(new[] { x })); componentType = componentType.BaseType; } return(new CompositeMetadataAttributesProvider(result.Where(x => x != null).ToArray())); }
internal override IEnumerable <object> GetConstructorParametersCore(Attribute attribute) { return(DataAnnotationsAttributeHelper.GetScaffoldColumnAttributeConstructorParameters(attribute)); }
internal override LambdaExpression GetConstructorExpressionCore() { return(DataAnnotationsAttributeHelper.GetScaffoldColumnAttributeCreateExpression()); }
internal override IEnumerable <Tuple <PropertyInfo, object> > GetPropertyValuePairsCore(Attribute attribute) { return(DataAnnotationsAttributeHelper.GetDisplayAttributePropertyValuePairs(attribute)); }