相关疑难解决方法(0)

如何向Enums添加扩展方法

我有这个枚举代码:

enum Duration { Day, Week, Month };
Run Code Online (Sandbox Code Playgroud)

我可以为此枚举添加扩展方法吗?

.net c# enums

103
推荐指数
7
解决办法
9万
查看次数

枚举的扩展方法,而不是枚举的实例

我对我的事情进行了枚举,如下:

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)

c# extension-methods enums

44
推荐指数
3
解决办法
3万
查看次数

通用枚举到SelectList扩展方法

我需要建立一个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)

c# asp.net-mvc extension-methods enums selectlist

6
推荐指数
1
解决办法
4883
查看次数

Enum对象的C#extend方法

我正在尝试创建一个扩展方法,但无法使其工作.

所以这工作,在一个枚举类型的例子上创建扩展方法:

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#公开)的类似方法.

c#

2
推荐指数
1
解决办法
577
查看次数

标签 统计

c# ×4

enums ×3

extension-methods ×2

.net ×1

asp.net-mvc ×1

selectlist ×1