c# - 如何在枚举上创建扩展方法 (c#)

标签 c# enums extension-methods

我想创建一个扩展方法,它将通过其键返回一个枚举值。 用法将是

LifeCycle.GetLifeCycle(1) 

或者 生命周期.GetLifeCycleByValue("")

这是我的想法 - 假设我有以下枚举:

public enum LifeCycle
{
    Pending = 0,
    Approved = 1,
    Rejected = 2,
}

我为 getByint 案例编写了以下扩展

public static class EnumerationExtensions
{
    private static Dictionary<int, LifeCycle> _lifeCycleMap = Enum.GetValues(typeof(LifeCycle)).Cast<int>().ToDictionary(Key => Key, value => ((LifeCycle)value));

    public static LifeCycle GetLifeCycle(this LifeCycle lifeCycle, int lifeCycleKey)
    {
        return _lifeCycleMap[lifeCycleKey];
    }
}

到目前为止

 LifeCycle.GetLifeCycle(1) 

开始编译。

这可能吗?

最佳答案

没有静态扩展方法这样的东西,而这正是您要尝试做的。您只能创建作用于类型实例的扩展方法,而不是类型本身。

关于c# - 如何在枚举上创建扩展方法 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340377/

相关文章:

c# - 如何使用 C# 脚本 (csx) 从函数内获取 Azure 函数名称

c# - 使用 C# 的简单正则表达式帮助(包括正则表达式模式)

c# - 在 ASP.NET MVC 3 中使用枚举

c# - 界面上的扩展方法未显示

c# - 生成唯一序列号的最佳方法是什么?

c# - System.Text.Json - 将第三方枚举数组序列化为字符串数组

python - 在 Django 模型中指定 mySQL ENUM

c# - 扩展方法未设置值

.net - VB.NET:无法在 System.Object 实例上使用扩展方法

c# - 如何在应用程序中使用引用同一 dll 的不同版本的两个 dll?