如何在 C# 中维护多个枚举之间的互连

  • 本文关键字:之间 枚举 维护 c# enums
  • 更新时间 :
  • 英文 :


我是 c# 的新手,在 java 中,我们曾经有枚举的互连,如下所示:

 public enum Module
{
    None(SubModule.None),
    Authentication(SubModule.Login),
    User(SubModule.User,SubModule.ForgotPassword,SubModule.ResetPassword)

    private SubModule subModule;
    public Module(SubModule... submodule)
    {
    }
 }

我想将我的模块与子模块互连,我在 C# 中尝试了相同的方法,它给出了编译错误。无论如何,在 C# 中可以做同样的事情吗?

C# 枚举是比 Java 枚举简单得多的类型 - 它们不能有构造函数、方法或成员字段。 但是,您可以使用具有表示每个"枚举"的静态实例的类来实现类似的功能。

public sealed class Module
{
    public static Module None { get; } = new Module(SubModule.None);
    public static Module Authentication { get; } = new Module(SubModule.Login);
    public static Module User { get; } = new Module(SubModule.User, SubModule.ForgotPassword, SubModule.ResetPassword);
    private SubModule[] _subModules;
    private Module(params SubModule[] subModules)
    {
        _subModules = subModules;
    }
}

此类允许您使用与枚举基本相同的语法访问静态Module实例,并且私有构造函数阻止创建新实例。

请注意,如果满足你的需要,SubModule可以是真正的 C# enum,也可以是具有"枚举"值静态属性的类。

最新更新