public static string[] MaskOutEnumNames <TEnum>(int mask, EnumToStringDelegate toString) { if (!typeof(TEnum).IsEnum) { throw new ArgumentException("Arg not an enum"); } var values = Enum.GetValues(typeof(TEnum)); var result = new List <String>(); for (int i = 0; i < values.Length; i++) { if (((int)values.GetValue(i) & mask) != 0) { result.Add(toString((int)values.GetValue(i))); } } return(result.ToArray()); }
internal static string[] ClipOutEnumNames <TEnum>(int start, int end, EnumToStringDelegate <TEnum> toString) { if (!typeof(TEnum).IsEnum) { throw new ArgumentException("Arg not an enum"); } var values = Enum.GetValues(typeof(TEnum)); var result = new List <String>(); for (int i = 0; i < values.Length; i++) { var v = values.GetValue(i); if ((int)v >= start && (int)v <= end) { result.Add(toString((TEnum)v)); } } return(result.ToArray()); }