我想创建一个扩展方法,它将通过其键返回一个枚举值。 用法将是
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/