我有一个类似下面的枚举来表示我的“物品”:
public enum Things
{
OneThing,
AnotherThing
}
我想要为这个枚举编写一个扩展方法(类似于Prise在这里的答案),但是该方法仅适用于枚举实例,如下:
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();
我们能做得比那更好吗?