У меня есть перечисление для моих вещей, например:
public enum Things
{
OneThing,
AnotherThing
}
Я хотел бы написать метод расширения для этого перечисления (аналогично ответ Призе здесь ), но пока этот метод работает на экземпляре перечисления , ala
Things thing; var list = thing.ToSelectList();
Я бы хотел, чтобы он работал с фактическим перечислением вместо:
var list = Things.ToSelectList();
Я мог бы просто сделать
var list = default(Things).ToSelectList();
Но мне не нравится, как это выглядит :)
Я приблизился с помощью следующего метода расширения:
public static SelectList ToSelectList(this Type type)
{
if (type.IsEnum)
{
var values = from Enum e in Enum.GetValues(type)
select new { ID = e, Name = e.ToString() };
return new SelectList(values, "Id", "Name");
}
else
{
return null;
}
}
Используется так:
var list = typeof(Things).ToSelectList();
Можем ли мы сделать что-то лучше?