我是 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
,也可以是具有"枚举"值静态属性的类。