Хотя вы не можете добавить метод статического расширения к типу, вы можете объявить новый класс следующим образом:
class EnumHelper
{
public static IEnumerable<string> GetStringValues<TEnum>()
where TEnum : struct, IComparable, IFormattable, IConvertible
{
var enumType = typeof(TEnum);
if (!enumType.IsEnum) {
throw new ArgumentException("T must be an enumerated type");
}
foreach (Enum item in Enum.GetValues(enumType))
{
yield return item.GetStringValue();
}
}
}
и вызвать его следующим образом:
class Program
{
enum Rainbow { Red, Orange, Yellow, Green, Blue, Indigo, Violet }
static void Main(string[] args)
{
foreach (var item in EnumHelper.GetStringValues<Rainbow>())
{
Console.WriteLine(item);
}
Console.ReadKey(false);
}
}