Согласно этому сайту :
Методы расширения позволяют писать методы для существующих классов таким образом, чтобы другие люди в вашей команде могли их обнаружить и использовать. Учитывая, что перечисления являются такими же классами, как и любые другие, неудивительно, что вы можете их расширить, например:
enum Duration { Day, Week, Month };
static class DurationExtensions
{
public static DateTime From(this Duration duration, DateTime dateTime)
{
switch (duration)
{
case Day: return dateTime.AddDays(1);
case Week: return dateTime.AddDays(7);
case Month: return dateTime.AddMonths(1);
default: throw new ArgumentOutOfRangeException("duration");
}
}
}
Я думаю, что перечисления - не лучший выбор в целом, но, по крайней мере, это позволяет вам централизовать часть обработки switch / if и немного их абстрагировать, пока вы не сможете сделать что-то лучше. Не забудьте также проверить, что значения находятся в диапазоне.
Вы можете прочитать больше здесь, на Microsft MSDN.