我有这个枚举代码:
enum Duration { Day, Week, Month };
Run Code Online (Sandbox Code Playgroud)
我可以为此枚举添加扩展方法吗?
我对我的事情进行了枚举,如下:
public enum Things
{
OneThing,
AnotherThing
}
Run Code Online (Sandbox Code Playgroud)
我想为这个枚举编写一个扩展方法(类似于Prize的答案)但是该方法适用于枚举的实例,ala
Things thing; var list = thing.ToSelectList();
Run Code Online (Sandbox Code Playgroud)
我希望它能用于实际的枚举:
var list = Things.ToSelectList();
Run Code Online (Sandbox Code Playgroud)
我可以这样做
var list = default(Things).ToSelectList();
Run Code Online (Sandbox Code Playgroud)
但我不喜欢那样:)
我已经接近以下扩展方法:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
var list = typeof(Things).ToSelectList(); …Run Code Online (Sandbox Code Playgroud) 我需要建立一个SelectList从任何Enum在我的项目.
我有下面的代码,我从特定的枚举创建一个选择列表,但我想为任何枚举创建一个扩展方法.此示例检索DescriptionAttribute每个Enum值的值
var list = new SelectList(
Enum.GetValues(typeof(eChargeType))
.Cast<eChargeType>()
.Select(n => new
{
id = (int)n,
label = n.ToString()
}), "id", "label", charge.type_id);
Run Code Online (Sandbox Code Playgroud)
public static void ToSelectList(this Enum e)
{
// code here
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个扩展方法,但无法使其工作.
所以这工作,在一个枚举类型的例子上创建扩展方法:
public enum Pets
{
....
}
Run Code Online (Sandbox Code Playgroud)
以上宠物可以扩展创建一个扩展方法,如:
public static void Myex(this Pets pet)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试扩展Enum本身的例子如下:
Public static void something(this Enum en)
{
...
}
Run Code Online (Sandbox Code Playgroud)
并试着像下面这样使用它
Enum.something();
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我试图创建类似Enum.Parse,Enum.IsDefined(已经由c#公开)的类似方法.