public static List <ExifContainerItem> GetExifContainer(bool includeEnumValueTranslation) { List <ExifContainerItem> container = new List <ExifContainerItem>(); Type t = typeof(ExifMetadata); PropertyInfo[] pi = t.GetProperties(); for (int i = 0; i < pi.Length; i++) { ExifContainerItem containerItem = new ExifContainerItem(); object[] attr = pi[i].GetCustomAttributes(true); for (int j = 0; j < attr.Length; j++) { if (attr[j] is ExifDisplayAttribute) { ExifDisplayAttribute exifAttri = (ExifDisplayAttribute)attr[j]; string displayName = Resources.LanguageContent.ResourceManager.GetString(exifAttri.DisplayName, Thread.CurrentThread.CurrentCulture); containerItem.DisplayLabel = displayName; containerItem.ValueFormat = Resources.LanguageContent.ResourceManager.GetString(exifAttri.ValueFormat, Thread.CurrentThread.CurrentCulture); containerItem.Property = pi[i]; containerItem.ExifTag = pi[i].Name; if (includeEnumValueTranslation) { if (pi[i].PropertyType.IsEnum) { containerItem.EnumValueTranslation = new Dictionary <string, string>(); Array enumValues = Enum.GetValues(pi[i].PropertyType); for (int k = 0; k < enumValues.Length; k++) { // TODO think about how to handle same enum value in different enum with different display. if (!containerItem.EnumValueTranslation.ContainsKey(enumValues.GetValue(k).ToString())) { containerItem.EnumValueTranslation.Add(enumValues.GetValue(k).ToString(), GetEnumItemDisplayValue(enumValues.GetValue(k))); } } } } container.Add(containerItem); } } } return(container); }
private Dictionary <string, string> getExifTagDisplayNames() { Dictionary <string, string> tags = new Dictionary <string, string>(); PropertyInfo[] pi = typeof(ExifMetadata).GetProperties(); for (int i = 0; i < pi.Length; i++) { object[] attr = pi[i].GetCustomAttributes(true); for (int j = 0; j < attr.Length; j++) { if (attr[j] is ExifDisplayAttribute) { ExifDisplayAttribute exifAttri = (ExifDisplayAttribute)attr[j]; string displayName = exifAttri.DisplayName; string propertyName = pi[i].Name; tags.Add(propertyName, displayName); } } } return(tags); }