c# - C# 中枚举的替代方法 - 嵌套

标签 c# enums static c#-6.0

<分区>

看到这篇有趣的文章:

Alternative to enum by Ardalis

如何才能在类中嵌套类。

假设,我们为每个角色设置了不同的状态:作者、编辑。

Author: Seasoned, Elite

Editor: Approved, Occassional

我如何访问该值:

Role.Author.Seasoned.Value

Role.Editor.Approved.Value

谢谢

最佳答案

我不明白这个问题。如果您想要嵌套类,请使用嵌套类。从您链接到的文章中的设计开始,您将获得:

public class Role
{
    public static class Author
    {
        public static Role Seasoned {get;} = new Role(0, "Seasoned author");
        public static Role Elite {get;} = new Role(1, "Elite author");
    }

    public static class Editor
    {
        public static Role Approved {get;} = new Role(2, "Approved editor");
        public static Role Occassional {get;} = new Role(3, "Occassional editor");
    }

    public string Name { get; private set; }
    public int Value { get; private set; }

    private Role(int val, string name) 
    {
        Value = val;
        Name = name;
    }

    public IEnumerable<Role> List()
    {
        return new[]{Author.Seasoned,Author.Elite,Editor.Approved,Editor.Occassional};
    }

    public Role FromString(string roleString)
    {
        return List().FirstOrDefault(r => String.Equals(r.Name, roleString, StringComparison.OrdinalIgnoreCase));
    }

    public Role FromValue(int value)
    {
        return List().FirstOrDefault(r => r.Value == value);
    }
}

关于c# - C# 中枚举的替代方法 - 嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674156/

相关文章:

c++ - 如何分析 Linux 可执行文件的静态内存使用情况?

c# - 从其事件处理程序访问控制

c# - 默认参数 PageSize A4 C# 使用 itextsharp

Java Enum.valueOf() 值不存在时的效率

enums - Angular 2 将枚举从 HTML 传递到组件函数

Python 方法查找,静态与实例

c# - 按钮没有正确的签名xamarin

c# - 以编程方式取消 SharePoint 工作流

c - Clang、GCC 接受相同功能的不同原型(prototype)

java : accessing static variables inside static block