public enum ReportTitle{[EnumDescription("TPS Report")]TPS,[EnumDescription("Summary Report")]Summary,[EnumDescription("Expense Breakdown Report")][EnumDescription("Expense Report")]ExpenseBreakdown,Unknown}
public static string GetEnumDescription(Enum enumValue){if (enumValue == null)return string.Empty;Type enumType = enumValue.GetType();Type descType = typeof(EnumDescriptionAttribute);FieldInfo fi = enumType.GetField(enumValue.ToString());object[] descAttrs = fi.GetCustomAttributes(descType, false);// concatenate multiple descriptionsstring desc = string.Empty;foreach (EnumDescriptionAttribute descAttr in descAttrs)desc += (desc.Length == 0) ? descAttr.Description : ", " + descAttr.Description;if (desc == string.Empty)desc = enumValue.ToString();return desc;}
public static string Description(this Enum enumValue){if (enumValue == null)return string.Empty;var enumType = enumValue.GetType();var descType = typeof(EnumDescriptionAttribute);var fi = enumType.GetField(enumValue.ToString());var descAttrs = fi.GetCustomAttributes(descType, false);// concatenate multiple descriptionsvar desc = string.Empty;foreach (EnumDescriptionAttribute descAttr in descAttrs) desc += (desc.Length == 0) ? descAttr.Description : ", " + descAttr.Description;if (desc == string.Empty)desc = enumValue.ToString();return desc;}
public static string Description(this Enum e){var attrs = e.CustomAttributes<Enum, EnumDescriptionAttribute>();var descs = new List<string>(attrs.Count);attrs.ForEach(a => descs.Add(a.Description));return descs.Join();}public static List<TAttr> CustomAttributes<T, TAttr>(this T obj)where TAttr : System.Attribute{var fi = obj.GetType().GetField(obj.ToString());var attrs = fi.GetCustomAttributes(typeof(TAttr), false);return new List<TAttr>((TAttr[])attrs);}public static string Join(this List<string> values){return values.Join(", ");}public static string Join(this List<string> values, string delimiter){string result = string.Empty;values.ForEach(v => result += (result.Length == 0) ? v : delimiter + v);return result;}
Labels: betas, c#
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.