У меня есть перечисление для моих вещей вроде:
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();
Можем ли мы сделать что-то лучше этого?